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のすべての行が表示される。

www.pursue.ne.jp

 

gci.t.u-tokyo.ac.jp