SELECT Parts.id
FROM (
SELECT parts_id
FROM Parts_Category
WHERE Parts_Category.category_id = '508'
UNION
SELECT parts_id
FROM Parts_Category
WHERE Parts_Category.main_category_id = '508'
) pc
JOIN Parts
ON parts.id = pc.parts_id
AND Parts.status = 'A'
LEFT JOIN
Image
ON image.id = parts.image_id
ध्यान दें कि MySQL
Index Merge
. का उपयोग कर सकते हैं और आप अपनी क्वेरी को इस प्रकार फिर से लिख सकते हैं:
SELECT Parts.id
FROM (
SELECT DISTINCT parts_id
FROM Parts_Category
WHERE Parts_Category.category_id = '508'
OR Parts_Category.main_category_id = '508'
) pc
JOIN Parts
ON parts.id = pc.parts_id
AND Parts.status = 'A'
LEFT JOIN
Image
ON image.id = parts.image_id
, जो अधिक कुशल होगा यदि आपके पास निम्नलिखित अनुक्रमणिकाएँ हैं:
Parts_Category (category_id, parts_id)
Parts_Category (main_category_id, parts_id)