sql >> Databáze >  >> RDS >> Mysql

Dotaz MySQL – Spojte data na základě dvou faktorů a poté přizpůsobte způsob řazení dat na základě hodnot

Select wp_users.ID
    , wp_users.user_login
    , wp_users.user_email
    , wp_users.user_nicename
    , Min( Case When wp_usermeta.meta_key = 'first_name' Then wp_usermeta.meta_value End ) As first_name
    , Min( Case When wp_usermeta.meta_key = 'last_name' Then wp_usermeta.meta_value End ) As last_name
    , Min( Case When wp_usermeta.meta_key = 'address' Then wp_usermeta.meta_value End ) As address
    , Min( Case When wp_usermeta.meta_key = 'dob' Then wp_usermeta.meta_value End ) As dob
From wp_user
    Join wp_usermeta
        On wp_usermeta.user_id = wp_user.ID
Where Exists    (
                Select 1
                From wp_usermeta As Meta1
                Where Meta1.user_id = wp_user.id
                    And Meta1.meta_key = 'wp_user_level' 
                    And Meta1.meta_value = '0' 
                )
        And wp_usermeta.meta_key In('first_name','last_name','address','dob')                   
Group By wp_users.ID
    , wp_users.user_login
    , wp_users.user_email
    , wp_users.user_nicename

Za prvé, jak již uvedli jiní, jedním z důvodů, proč je psaní tohoto dotazu tak těžkopádné, je to, že musíte použít strukturu EAV. Koncept „meta“ tabulky je skutečně prokletí relačního designu. Zadruhé, abyste získali informace z EAV, musíte vytvořit to, co se nazývá křížový dotaz, kde vytvoříte sloupce, které chcete v dotazu. Obecně platí, že relační databáze nejsou navrženy pro průběžné generování sloupců, jako to dělám ve svém řešení, a jsou vyžadovány pro EAV.



  1. Wampserver 2.1 zobrazí po instalaci na Windows 7 oranžovou ikonu

  2. Formát data a času Mysql přidá 10 minut

  3. ClassNotFoundException:com.mysql.jdbc.GoogleDriver

  4. Jak mohu získat procento celkových řádků s mysql pro skupinu?