MySQL बाएं कई पंक्तियों में शामिल हों - MySQL, चयन करें, समूह-द्वारा, बाएं-शामिल हों

मेरी समस्या को सरल बनाने के लिए: मान लें कि मेरे पास 3 टेबल हैं।

Rooms              People                    Things
--------           --------                  --------
id| name           id | name | fk_rooms      id | name | fk_rooms
-----------        ---------------------     ---------------------
1 | kitchen        1  | John | 1              1 | TV   | 2
2 | bedroom        2  | Mary | 2              2 | bed  | 2
3  | Andy | 1              3 | sink | 1
4  | Laura| 1

अब मैं कुछ ऐसा कर रहा हूं:

SELECT r.name AS room_name, p.name AS name, t.name AS thing FROM Rooms r
LEFT JOIN People p ON p.fk_rooms = r.id
LEFT JOIN Things t ON t.fk_rooms = r.id

जो मेरे मामले में कुछ के अलावा पूरी तरह से काम करता हैजिनके पास "कमरे" तालिका के साथ कई संबंध हैं। तो परिणामस्वरूप नई पंक्तियों के बजाय "कमरे" तालिका के संबंध में "लोग" और "चीजें" के लिए अलग-अलग नाम रखने के लिए, मैं केवल दो पंक्तियां प्राप्त करना चाहता हूं:

1. kitchen, John, Andy, Laura, sink
2. bedroom, Mary, TV, bed

GROUP BY आरआईडी पर ही होगा select प्रत्येक तालिका से एक पंक्ति। किसी भी सहायताको बहुत सराहा जाएगा!

उत्तर:

जवाब के लिए 3 № 1

यहां आप यही खोज रहे हैं:

SELECT r.name AS room_name,
GROUP_CONCAT(p.name separator ",") AS people_name,
GROUP_CONCAT(t.name separator ",") AS things
FROM Rooms r
LEFT JOIN People p ON p.fk_rooms = r.id
LEFT JOIN Things t ON t.fk_rooms = r.id
GROUP BY r.id

उत्तर № 2 के लिए 1

हां, आपको समूह द्वारा समूह की आवश्यकता है, और आपको इसका उपयोग करने की आवश्यकता है group_concat समारोह। आपको अपने परिणामों को People.fk_rooms और Thing.fk_rooms द्वारा समूहित करना चाहिए।

शायद आप दो अलग-अलग प्रश्नों का उपयोग कर सकते हैं:पहले परिणामस्वरूप एफके_रूम द्वारा समूहित कमरे और लोगों के साथ जुड़ने के परिणामस्वरूप तीन कॉलम चुने गए थे, वे रूमआईडी, रूमनाम, लोग हैं, जबकि दूसरे परिणामस्वरूप एफके_रूम द्वारा समूहित कमरे और चीज में शामिल होंगे, जिसमें तीन कॉलम चुने गए हैं, वे रूमआईडी, रूमनाम, चीजें हैं। आपकी क्वेरी में आप इन चयनों को टी 1 और टी 2 के रूप में नाम दें और कमरे आईडी द्वारा टी 1 और टी 2 में शामिल हों, t1.RoomName, t1.Pople, t2.Things का चयन करें।

सौभाग्य।


संबंधित सवाल
सबसे लोकप्रिय