Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL — połącz dane na podstawie dwóch czynników, a następnie dostosuj sposób sortowania danych na podstawie wartości

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

Po pierwsze, jak wspomnieli inni, jednym z powodów, dla których pisanie tego zapytania jest tak kłopotliwe, jest to, że musisz użyć struktury EAV. Koncepcja „meta” stołu jest tak naprawdę przekleństwem dla projektowania relacyjnego. Po drugie, aby uzyskać informacje z EAV, musisz utworzyć tak zwane zapytanie krzyżowe, w którym tworzysz kolumny, które chcesz w zapytaniu. Ogólnie rzecz biorąc, relacyjne bazy danych nie są przeznaczone do generowania kolumn w locie, tak jak robię to w moim rozwiązaniu, i są wymagane dla EAV.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz i zwróć tylko sumę kontrolną (nie tabelę) z tabeli sum kontrolnych w mysql

  2. Uprawnienie FILE do sesji/użytkownika MySQL

  3. Typy danych MySQL:poznaj, których należy używać i w jaki sposób

  4. Jaki jest najlepszy typ danych do przechowywania adresów URL w bazie danych MySQL?

  5. Wybierz kursy, które są w pełni spełnione przez daną listę wymagań wstępnych