この質問はあまりにも長いので、事前に感謝します!UNIONを使用して3つのテーブルを結合するMySQL
はじめ
私は現在、多対多の関係を使用して3つのテーブルを持っています。私はすべての3つのテーブルを照会し、それらを1つのテーブルに結合する必要があります。
問題
私はこのクエリを試してみました:
SELECT * FROM `login` LEFT JOIN membership ON login.id = membership.login_id UNION SELECT * FROM `login` RIGHT JOIN membership ON login.id = membership.login_id
そして、それは返します
+----+------+----------+
| id | name | group_id |
+----+------+----------+
| 1 | Tom | 6 |
| 2 | John | 8 |
| 3 | Jane | 4 |
+----+------+----------+
質問
group_name
も含める必要があります。これは私の所望の出力です:
+----+------+----------+------------+
| id | name | group_id | group_name |
+----+------+----------+------------+
| 1 | Tom | 6 | Red |
| 2 | John | 8 | Brown |
| 3 | Jane | 4 | Purple |
+----+------+----------+------------+
テーブル
login
表
自動インクリメントIDを持つすべてのユーザーのリスト
+----+------+
| id | name |
+----+------+
| 1 | Tom |
| 2 | John |
| 3 | Jane |
+----+------+
group
表
ユーザがTに属する上
group_id
とgroup_name
+----------+------------+
| group_id | group_name |
+----------+------------+
| 1 | Green |
| 2 | Blue |
| 3 | Yellow |
| 4 | Purple |
| 5 | Orange |
| 6 | Red |
| 7 | Pink |
| 8 | Brown |
+----------+------------+
membership
表
格納情報を持つすべてのグループのリストOグループ
+----------+----------+
| login_id | group_id |
+----------+----------+
| 1 | 6 |
| 2 | 8 |
| 3 | 4 |
+----------+----------+
は、一般的に言えば、あなたはそこから "常に" 存在し、その後 'LEFT JOIN'' FROM'句で参照されているものは何でもテーブルにする必要があります - あなたの実際のデータ接続についての推論をはるかに簡単にするでしょう。 –