Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Permintaan MySQL - Gabungkan data berdasarkan dua faktor, lalu sesuaikan cara data diurutkan berdasarkan nilai

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

Pertama, seperti yang telah disebutkan orang lain, salah satu alasan kueri ini sangat rumit untuk ditulis adalah karena Anda harus menggunakan struktur EAV. Konsep tabel "meta" benar-benar merupakan laknat bagi desain relasional. Kedua, untuk mendapatkan informasi dari EAV, Anda harus membuat apa yang disebut kueri tab silang tempat Anda membuat kolom yang diinginkan dalam kueri. Secara umum, database relasional tidak dirancang untuk pembuatan kolom langsung seperti yang saya lakukan dalam solusi saya dan diperlukan untuk 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. Kelompokkan menurut hari dari stempel waktu

  2. memutar log kueri lambat mysql

  3. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan mysqli_result()

  4. Tulis Pandas DataFrame ke database MySQL

  5. Perbarui satu tabel MySQL dengan nilai dari yang lain