इस समस्या को Relational Division
. कहा जाता है
SELECT boy_id
FROM boys_chocolates
WHERE chocolate_id IN ('$string')
GROUP BY boy_id
HAVING COUNT(DISTINCT chocolate_id) = ? -- <<== number of chocolates specified
उदाहरण:
SELECT boy_id
FROM boys_chocolates
WHERE chocolate_id IN (1,2,3,4)
GROUP BY boy_id
HAVING COUNT(DISTINCT chocolate_id) = 4
हालांकि, अगर chocolate_id
प्रत्येक boy_id
. के लिए अद्वितीय है , DISTINCT
कीवर्ड वैकल्पिक है।
SELECT boy_id
FROM boys_chocolates
WHERE chocolate_id IN (1,2,3,4)
GROUP BY boy_id
HAVING COUNT(*) = 4
अपडेट 1
...मैं टेबल में से उन लड़कों को चुनना चाहता हूं जिनके पास बिल्कुल वही चॉकलेट हैं जिनका मैंने उल्लेख किया है। अधिक नहीं कम नहीं...
SELECT boy_id
FROM boys_chocolates a
WHERE chocolate_id IN (1,2,3,4) AND
EXISTS
(
SELECT 1
FROM boys_chocolates b
WHERE a.boy_ID = b.boy_ID
GROUP BY boy_id
HAVING COUNT(DISTINCT chocolate_id) = 4
)
GROUP BY boy_id
HAVING COUNT(*) = 4