एक left join
सही है, लेकिन आपको types
. की आवश्यकता है प्रथम होना:
SELECT DISTINCT types.type, owners.name, owners.city
FROM tbl_pet_types types LEFT JOIN
tbl_pet_owners owners
ON owners.pet = types.pet
WHERE types.type IN ('mammal', 'fish', 'amphibian', 'seacreature');
क्योंकि WHERE
खंड केवल tbl_pet_types
को संदर्भित करता है , यह नहीं बदलता है।
कैसे left join
कार्य सरल है:यह सभी पंक्तियों को पहले . में रखता है मेज़। दूसरे में बेजोड़ कॉलम NULL
become बन जाते हैं ।
संपादित करें:
यदि आपके पास उन प्रकारों की सूची है जो tbl_pet_types
. में नहीं हैं , तो आपको left join
. की आवश्यकता होगी व्युत्पन्न तालिका में सभी मानों के साथ:
SELECT DISTINCT tt.type, po.name, po.city
FROM (SELECT 'mammal' as type UNION ALL
SELECT 'fish' as type UNION ALL
SELECT 'amphibian' as type UNION ALL
SELECT 'seacreature' as type
) tt left join
tbl_pet_types pt
ON pt.type = tt.type LEFT JOIN
tbl_pet_owners po
ON po.pet = pt.pet;