mysql カラムの統合
成功した記録:
mysql> select restaurant_master.place_id, rating.place_id, AVG(rating) FROM restaurant_master LEFT JOIN rating ON restaurant_master.place_id = rating.place_id GROUP BY restaurant_master.place_id;
エラー:ambiguous;
mysql> select place_id, AVG(rating)
-> FROM restaurant_master
-> LEFT JOIN rating
-> ON restaurant_master.place_id = rating.place_id
-> GROUP BY restaurant_master.place_id;
ERROR 1052 (23000): Column 'place_id' in field list is ambiguous
メモ:
内部結合
内部結合は、指定された両方の表に存在するものだけが抽出される
- 表の内部結合
- WHERE句で表の結合条件を指定する
- FROM句でINNER JOINで表の結合条件を指定する
顧客表のすべての行を表示させたいときには、外部結合であるLEFT JOINまたはRIGHT JOINを指定する。
LEFT JOINとRIGHT JOIN(外部結合)
LEFT JOINとRIGHT JOINは、左右いずれかの表を優先させたいときに指定する。
- LEFT JOIN
- 左側に指定された表のすべての行が表示される
- RIGHT JOIN
- 右側に指定された表のすべての行が表示される
LEFT JOINとRIGHTの記述形式は以下のとおりである。
LEFT JOIN記述形式
SELECT 列名1,列名2,~列名n
FROM 表名1 LEFT JOIN表名2 ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件
RIGHT JOINの記述形式
SELECT 列名1,列名2,~列名n
FROM 表名1 RIGHT JOIN表名2 ON 表名1.フィールド名 = 表名2.フィールド名
WHERE 抽出条件
LEFT JOINを指定とすると、左側の表名1のすべての行が表示される。これとは逆にRIGHT JOINとすると、右側の表名2のすべての行が表示される。