निम्न में से किसी भी मामले में, यदि आप PROJECT.num
नहीं जानते हैं /PROJECT_TO_TAGS.project_id
, आपको PROJECTS
. में शामिल होना होगा तालिका आईडी मान प्राप्त करने के लिए यह पता लगाने के लिए कि यह कौन से टैग से जुड़ा है।
IN का उपयोग करना
SELECT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
WHERE pt.tag_id IN (SELECT x.tag_id
FROM PROJECTS_TO_TAGS x
WHERE x.project_id = 4)
EXISTS का उपयोग करना
SELECT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
WHERE EXISTS (SELECT NULL
FROM PROJECTS_TO_TAGS x
WHERE x.project_id = 4
AND x.tag_id = pt.tag_id)
जॉइन का उपयोग करना (यह सबसे कुशल है!)
DISTINCT
यह आवश्यक है क्योंकि जॉइन परिणामसेट में डुप्लीकेट डेटा के आने का जोखिम उठाते हैं...
SELECT DISTINCT p.*
FROM PROJECTS p
JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
JOIN PROJECTS_TO_TAGS x ON x.tag_id = pt.tag_id
AND x.project_id = 4