2012-08-31 16 views
7

में शामिल होने के लिए ट्रिपल जॉइन क्वेरी बनाने में कठिनाई हो रही है।MySQL ट्रिपल

हाउस:

house ID(key) | Address | personID | 

व्यक्ति:

personID (key) | Name | Address | 

चित्र:

मैं तीन टेबल है घर के //

imageID (key) | personID | url | 

मैं परिणाम पर सीमित करना चाहता हूं।

मैं घर का पता-एएस (मुख्य) पूछना चाहता हूं, यह मालिक का नाम & पता, और मालिक की एक तस्वीर है।

नोट: प्रत्येक व्यक्ति की 3 छवियां (छवि तालिका में 3 पंक्तियां) हैं, लेकिन केवल एक आवश्यक है, इससे कोई फर्क नहीं पड़ता।

+2

एक व्यक्ति एक से अधिक घरों के मालिक हो सकता है? एक व्यक्ति-पंक्ति में केवल एक घर-आईडी होती है ?! यह कैसे संभव होगा? – TheHe

+1

घर से home_id कॉलम ड्रॉप करें और इसके बजाय घर तालिका में मालिक_आईडी कॉलम जोड़ें, या शायद बेहतर, owner_id, house_id कॉलम के साथ स्वामी_हाउस तालिका बनाएं। – Icarus

+0

@Thehee मेरी गलती क्षमा करें, मैंने इसे ठीक किया। –

उत्तर

19
SELECT h.Address, p.Name, p.Address as OwnerAddress, i.url FROM house AS h 
INNER JOIN person AS p ON p.personID = h.personID 
INNER JOIN images AS i ON i.personID = p.personID 
GROUP BY h.houseID 

आपके लिए काम करना चाहिए।

+0

मदद के लिए धन्यवाद :) –

2

शायद यह आप की तरह

SELECT 
    h.Address as `h_address`, 
    p.Name  as `p_name`, 
    p.Address as `p_address`, 
    i.url  as `i_url` 
FROM house AS `h` 
    LEFT OUTER JOIN person AS `p` ON (p.personID = h.personID) 
    LEFT OUTER JOIN images AS `i` ON (p.personID = i.personID) 
GROUP BY h.houseID 

का उपयोग करने के लिए छोड़ दिया बाहरी शामिल हों, कुछ यह कोई पंजीकृत छवियों के साथ भी घरों में प्रदर्शित करेंगे बेहतर चाहते।

-1

में शामिल होने के तीन टेबल

यानी:

select i_f.*, i_f_d.* , i_f_c.creator_name 
    from indent_form i_f 
    join indent_form_details i_f_d on i_f.id=i_f_d.ind_id 
    join indent_form_creator i_f_c on i_f.user_id=i_f_c.id 

indent_form table 1, 
indent_form_details table 2, 
indent_form_creator table 3, 
संबंधित मुद्दे