मेरे पास तीन टेबल हैं जो मैं इस प्रश्न में लिंक करना चाहता हूं।MySQL पूर्ण एक टेबल में शामिल हों, और बाएं एक ही प्रश्न में दूसरे से जुड़ें?
स्क्रिप्ट एक उपस्थिति रजिस्टर है, इसलिए यह प्रति उपयोगकर्ता प्रत्येक मीटिंग के लिए उपस्थिति चिह्न रिकॉर्ड करता है।
तीन टेबल का प्रयोग किया:
"टीम":
id | fullname | position | class | hidden
1 | Team | -- | black | 1
2 | Dan S | Team Manager | green | 0
3 | Harry P | Graphic Engineer | blue | 0
"रजिस्टर":
id | mid | uid | mark
1 | 1 | 2 |/
2 | 1 | 3 | I
3 | 2 | 1 |/
4 | 2 | 3 |/
"बैठकों":
id | maintask | starttime | endtime
1 | Organise Year Ahead | 1330007400 | 1330012800
2 | Gather Ideas | 1330612200 | 1330617600
3 | TODO | 1331217000 | 1331222400
एक नमूना नहीं है डेटा का मैं क्या करना चाहता हूं:
रजिस्टर से सभी परिणाम चुनें, उन्हें उपयोगकर्ता द्वारा समूहित करें, और मीटिंग प्रारंभ समय तक उन्हें आदेश दें। "-" लेकिन, अगर वहाँ रजिस्टर तालिका में एक निशान नहीं है, मैं इसे प्रदर्शित करना चाहते हैं (php के माध्यम से किया जा सकता है यदि आवश्यक हो) तो एक अपेक्षित परिणाम तो जैसे:
fullname | mark | mid
Dan S |/ | 1
Dan S |/ | 2
Dan S | - | 3
Harry P | I | 1
Harry P |/ | 2
Harry P | - | 3
मेरे एसक्यूएल क्वेरी इस पर है पल:
आपको चुनें।
fullname
, यू।id
, आर।mark
, आर।mid
team
से आप पूरी तरह से जुड़ेंregister
r ON r।uid
= यू।id
बाएं जॉइनmeetings
एम आर।mid
= एम।id
आपके द्वारा ग्रुप।id
एम द्वारा आदेश।starttime
एएससी
और मैं MySQL से वापस कोई त्रुटि मिलती है:
आप अपने एसक्यूएल वाक्य रचना में एक त्रुटि है, मैन्युअल जांचें कि 'पूर्ण जॉइन
register
r ON r के पास का उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाता है।uid
= यू।id
बाएं जॉइनmeetings
मीटर चालू आर।mid
= लाइन 1
पर m.`id 'लेकिन, मैं नहीं कर सकते यह कोई समस्या दिखाई:, एस
कृपया किसी को बाहर मदद कर सकता है सही दिशा में मुझे बिंदु या मेरे लिए एक संभव समाधान दे इस। बहुत सराहना
दान
उत्तर: क्वेरी कि काम किया:
SELECT
u.fullname, u.id as uid,
if(r.uid = u.id, r.mark, '-') as mark,
if(r.uid = u.id, r.mid, '-') as mid,
r.mid, m.starttime
FROM
team u
CROSS JOIN
register r ON u.id = r.uid
LEFT OUTER JOIN
meetings m ON r.mid = m.id
WHERE
u.hidden = 0
GROUP BY
u.id, r.mid
ORDER BY
m.starttime, u.id ASC
Ive MySQL में यह प्रयोग किया जाता o.o से पहले मुझे यकीन है कि मैं है हूँ - शायद नहीं, वाम बाहरी के साथ भ्रमित हो गया हो सकता है शामिल हों या कुछ और। पूर्ण बाहरी शामिल होने के बजाय मैं क्या उपयोग कर सकता हूं जो वही काम करेगा? –
Google 'पूर्ण बाहरी जॉइन' के लिए कुछ समाधानों के लिए 'पूर्ण बाहरी mysql' अनुकरण' के लिए Google जो वास्तव में mysql में मौजूद नहीं है। – biziclop
आपको बहुत धन्यवाद, क्रॉस जॉइन पूरी तरह से काम किया :) (किसी कारण से मैं स्वीकार्य उत्तर o.O के रूप में चिह्नित नहीं कर सकता) –