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

Bagaimana cara memilih baris yang memiliki hubungan tertentu melalui tabel pivot?

  • Anda dapat GROUP BY pada id dan nama pengguna.
  • Gunakan HAVING klausa dengan SUM() agregasi untuk menyaring kasus.
  • Jika pengguna tidak bekerja pada hari tertentu, SUM() untuk hari itu akan menjadi nol, posting bergabung.

Untuk kasus pertama (berfungsi tepat semua hari kerja dalam seminggu), Coba:

SELECT u.id, u.name
FROM USERS AS u 
JOIN WORKDAYS AS wd ON wd.user_id = u.id 
JOIN DAYS AS d ON d.id = wd.day_id 
GROUP BY u.id, u.name 
HAVING SUM(d.name = 'monday') 
   AND SUM(d.name = 'tuesday') 
   AND SUM(d.name = 'wednesday') 
   AND SUM(d.name = 'thursday') 
   AND SUM(d.name = 'friday') 
   AND SUM(d.name = 'sunday') = 0 
   AND SUM(d.name = 'saturday') = 0

Untuk kasus kedua, hapus saja ketentuan pada sunday dan saturday . Coba:

SELECT u.id, u.name
FROM USERS AS u 
JOIN WORKDAYS AS wd ON wd.user_id = u.id 
JOIN DAYS AS d ON d.id = wd.day_id 
GROUP BY u.id, u.name 
HAVING SUM(d.name = 'monday') 
   AND SUM(d.name = 'tuesday') 
   AND SUM(d.name = 'wednesday') 
   AND SUM(d.name = 'thursday') 
   AND SUM(d.name = 'friday') 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setel Ulang Kata Sandi Root MySQL di Windows

  2. Bagaimana cara menyimpan catatan harian dari tabel mysql ke tabel lain?

  3. Sphinx tanpa menggunakan id auto_increment

  4. Cara mengambil nilai dropdown dari database dan ditampilkan di jsp

  5. Pilih poin dari database peta sesuai dengan radius