के साथ जुड़ें वर्तमान में users
और programs
के समान दो टेबल हैं जो link
तालिका के माध्यम से कई से अधिक रिश्तों के माध्यम से जुड़े हुए हैं।कई तालिकाओं में से कई पिवोट
mysql> select * from users;
+----+----------+
| id | name |
+----+----------+
| 1 | Jonathan |
| 2 | Little |
| 3 | Annie |
| 4 | Bob |
+----+----------+
4 rows in set (0.00 sec)
mysql> select * from programs;
+----+----------------------+
| id | name |
+----+----------------------+
| 1 | Microsoft Word |
| 2 | Microsoft Excel |
| 3 | Microsoft PowerPoint |
+----+----------------------+
3 rows in set (0.00 sec)
mysql> select * from link;
+---------+------------+
| user_id | program_id |
+---------+------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 2 |
| 3 | 1 |
| 3 | 4 |
+---------+------------+
6 rows in set (0.00 sec)
मुझे समझ में तालिकाओं में शामिल होने और इस तरह का एक परिणाम के वापस जाने के लिए कैसे:
mysql> select users.name, programs.name from linker
-> join users on users.id = linker.user_id
-> join programs on programs.id = linker.program_id;
+----------+----------------------+
| name | name |
+----------+----------------------+
| Jonathan | Microsoft Word |
| Jonathan | Microsoft Excel |
| Jonathan | Microsoft PowerPoint |
| Little | Microsoft Excel |
| Annie | Microsoft Word |
+----------+----------------------+
लेकिन क्या मैं वास्तव में देख रहा हूँ एक छोटे से अधिक जटिल है:
+----------+-----------------------------------------------------+
| name | name |
+----------+-----------------------------------------------------+
| Jonathan | Microsoft Word,Microsoft Excel,Microsoft PowerPoint |
| Little | Microsoft Excel |
| Annie | Microsoft Word |
+----------+-----------------------------------------------------+
मैं मान लें कि GROUP_CONCAT()
कहीं कमांड में फेंक दिया गया है, लेकिन मुझे परिणाम इस तरह दिखने से प्रतीत नहीं होता है:
mysql> select users.name, group_concat(programs.name) from linker
-> join users on users.id = linker.user_id
-> join programs on programs.id = linker.program_id;
+----------+------------------------------------------------------------------------------------+
| name | group_concat(programs.name) |
+----------+------------------------------------------------------------------------------------+
| Jonathan | Microsoft Word,Microsoft Excel,Microsoft PowerPoint,Microsoft Excel,Microsoft Word |
+----------+------------------------------------------------------------------------------------+
क्या कोई मुझे सही दिशा में इंगित कर सकता है?
यह डुप्लिकेट मानों को समाप्त करता है, लेकिन यह परिणाम को पहली पंक्ति तक सीमित करता है। –
सुनिश्चित नहीं है ... पहले उपयोगकर्ताओं को खींचने का प्रयास करें। – Ryan
उत्तर अपडेट किया गया - उपरोक्त क्वेरी को आजमाएं। – Ryan