आपका प्रश्न है:"उन सभी घटकों का पता लगाएं जो एक विशिष्ट शहर में सभी परियोजनाओं के लिए भेजे गए हैं/हैं।" आप इसे "उन सभी घटकों को खोजें जहां किसी दिए गए शहर में कोई परियोजना नहीं है जिसमें घटक नहीं है" के रूप में आप इसे दोहरा रहे हैं।
मैं सीधे इसका उत्तर देना चाहूँगा:
select scp.component
from scp join
projects p
on scp.pnr = p.pnr
where p.city = 'Foobar Town'
group scp.component
having count(distinct scp.pnr) = (select count(distinct pnr)
from projects
where city = 'Foobar Town'
);
यह शहर में विभिन्न परियोजनाओं की संख्या की गणना करता है और उनकी तुलना शहर में परियोजनाओं की संख्या से करता है (distinct
आईडी शायद सबक्वेरी में जरूरी नहीं है।
सबसे पहले, मुझे यकीन नहीं है कि यह आसान है। दूसरा, मैं यह स्वीकार करने वाला पहला व्यक्ति हूं कि NOT EXISTS
विधि हो सकता है अधिक कुशल बनें, हालांकि NOT EXISTS
. का नेस्टिंग उपश्रेणियों में प्रदर्शन के लिए हानिकारक हो सकता है। हालांकि, मुझे लगता है कि इसका पालन करना आसान है।