sql >> Database teknologi >  >> RDS >> Mysql

Hvordan vælger man rækker, der har bestemte relationer, gennem en pivottabel?

  • Du kan GROUP BY på bruger-id og navn.
  • Brug HAVING klausul med SUM() aggregering for at bortfiltrere sager.
  • Hvis en bruger ikke arbejder på en bestemt dag, SUM() for den dag vil være nul, post joins.

For det første tilfælde (virker præcis alle ugens arbejdsdage), Prøv:

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

For det andet tilfælde skal du blot fjerne betingelserne på sunday og saturday . Prøv:

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. Prøver at opdatere post med PDO

  2. Er dette en rigtig lang meningsmåling?

  3. Sådan viser du skjulte elementer i VBA-objektbrowseren

  4. Konverter tidsstreng til decimaltimer PHP