2011-06-08 13 views
12

मैं एक रिपोर्ट चला रहा हूं जो समितियों के सदस्यों के लिए एक्सेल स्प्रैडशीट में जानकारी निर्यात करता है।अगर MySQL क्वेरी में मौजूद है तो शामिल हों

SELECT membership_organization.name AS Firm, 
membership_individual.first AS FirstName, 
membership_individual.middle AS MiddleName, 
membership_individual.last AS LastName, 
membership_individual.email AS Email, 
membership_individual.phone AS Phone, 
membership_location.addr1 AS Address1, 
membership_location.addr2 AS Address2, 
membership_location.city AS City, 
membership_location.state AS State, 
membership_location.zipcode AS Zip 
FROM membership_individual 
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id 
JOIN membership_location ON membership_individual.location_id = membership_location.id 
WHERE membership_individual.id IN ({list if ids}) 
ORDER BY LastName 

समस्या, कुछ सदस्यों के एक स्थान आईडी सेट नहीं है या इसे 0 पर सेट है, ताकि उन सदस्यों रिपोर्ट में दिखाई देते नहीं है:

यहाँ मेरी क्वेरी है।

क्या कोई तरीका है कि मैं स्थान जॉइन योग्यता प्राप्त कर सकता हूं? यदि सदस्य स्थान आईडी मौजूद है तो जानकारी खींचें, अगर मुझे उपलब्ध जानकारी नहीं दिखाती है।

उत्तर

22

अपने JOIN एस दोनों को LEFT JOIN एस में बदलें। आपको अपने सभी रिकॉर्ड्स सदस्यता_ व्यक्तिगत से मिलेगा जहां क्लॉज मेल खाता है, और अन्य सारणी के लिए नल मान जहां पंक्तियां मेल नहीं खाती हैं।

+0

हाँ, मुझे लगा कि यह कुछ आसान था, अनुमान है कि मुझे कुछ कॉफी चाहिए। धन्यवाद! – Ryan

3

एक वाम बाहरी का उपयोग शामिल हों:

LEFT JOIN membership_location ON membership_individual.location_id = membership_location.id 
अपने संस्करण के बजाय

उपयोग करने के लिए

SELECT membership_organization.name AS Firm, 
membership_individual.first AS FirstName, 
membership_individual.middle AS MiddleName, 
membership_individual.last AS LastName, 
membership_individual.email AS Email, 
membership_individual.phone AS Phone, 
membership_location.addr1 AS Address1, 
membership_location.addr2 AS Address2, 
membership_location.city AS City, 
membership_location.state AS State, 
membership_location.zipcode AS Zip 
FROM membership_individual 
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id 
LEFT OUTER JOIN membership_location ON membership_individual.location_id = membership_location.id 
WHERE membership_individual.id IN ({list if ids}) 
ORDER BY LastName 
+2

'बाहरी' निहित है। 'बाएं शामिल' सब कुछ जरूरी है। – Fosco

+0

@ फोस्को, आपकी टिप्पणी के विपरीत ... – Blindy

0

उपयोग में शामिल होने के लिए छोड़ दिया, जिसका अर्थ है आपकी क्वेरी बन जाएगा

SELECT membership_organization.name AS Firm, 
membership_individual.first AS FirstName, 
membership_individual.middle AS MiddleName, 
membership_individual.last AS LastName, 
membership_individual.email AS Email, 
membership_individual.phone AS Phone, 
membership_location.addr1 AS Address1, 
membership_location.addr2 AS Address2, 
membership_location.city AS City, 
membership_location.state AS State, 
membership_location.zipcode AS Zip 
FROM membership_individual 
JOIN membership_organization ON membership_individual.org_name_id = membership_organization.id 
LEFT JOIN membership_location ON membership_individual.location_id = membership_location.id 
WHERE membership_individual.id IN ({list if ids}) 
ORDER BY LastName 

और आपको सभी सदस्यों के लिए डेटा मिल जाएगा, यहां तक ​​कि जिनके लिए स्थान तालिका में कोई पंक्ति नहीं है।

संबंधित मुद्दे