- आप
GROUP BY
कर सकते हैं यूजर आईडी और नाम पर। HAVING
का उपयोग करेंSUM()
with के साथ क्लॉज मामलों को फ़िल्टर करने के लिए एकत्रीकरण।- यदि कोई उपयोगकर्ता किसी विशेष दिन काम नहीं करता है,
SUM()
उस दिन के लिए शून्य होगा, पोस्ट जॉइन करें।
पहले मामले के लिए (बिल्कुल . काम करता है) सप्ताह के सभी कार्यदिवस), कोशिश करें:
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
दूसरे मामले के लिए, बस sunday
. पर शर्तों को हटा दें और saturday
. कोशिश करें:
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')