चूंकि एक नुस्खा कई सामग्रियों का उपयोग कर सकता है और आप उन व्यंजनों की तलाश कर रहे हैं जो निर्दिष्ट सामग्री में से एक या अधिक का उपयोग करते हैं, आपको DISTINCT
का उपयोग करना चाहिए डुप्लिकेट परिणामों को रोकने के लिए कीवर्ड जहां एक नुस्खा निर्दिष्ट सूची से एक से अधिक सामग्री का उपयोग कर रहा है। साथ ही, आप IN
. का उपयोग कर सकते हैं एकाधिक संघटक आईडी पर फ़िल्टर करने के लिए खंड।
select DISTINCT r.name
from
recipes r
inner join ingredient_index i
on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5);
वैकल्पिक रूप से, यदि आप उन व्यंजनों की तलाश कर रहे हैं जो सूची में निर्दिष्ट सभी सामग्रियों का उपयोग कर रहे हैं, तो आप परिणामों को नुस्खा के नाम से समूहित कर सकते हैं और जांच सकते हैं कि रिकॉर्ड की संख्या आपकी सूची में सामग्री की संख्या के समान है या नहीं।
select r.name
from
recipes r
inner join ingredient_index i
on i.recipe_id = r.recipe_id
where i.ingredient_id IN (7, 5)
GROUP BY r.name
HAVING COUNT(*) = 2
यह माना जा रहा है कि समान (रेसिपी_आईडी, संघटक_आईडी) टपल (एक अद्वितीय बाधा के साथ बेहतर सुनिश्चित) के साथ डुप्लिकेट रिकॉर्ड नहीं होंगे।