この質問は既にここで何度も尋ねられていますが、結局のところ私の答えは見つけられませんでした。mysql - 2つのテーブルを1つの関係から複数の関係に結びつける
、私の質問は:
私は2つのテーブルを持っており、これらのテーブルの構造はようである:
TABLE1: item_id, store,title,available,shipping
表2: item_id, review_rate,user_id,review_title
これらのテーブルは、one to many
の関係として結合する必要があります。例えば
は、これらの表のデータは、ある場合:
table1:
item_id store title available shipping
-------------------------------------------------------
11 glasses ..........................
12 dresses ..........................
.
.
.
table2:
item_id review_rate user_id review_title
--------------------------------------------------
11 3 10023 good item
11 5 10024 nice item
12 1 10024 nice one
.
.
.
、結果は接合後のようにすべきである:
afterJoin:
item_id store title available shipping rate people_reviewed
-----------------------------------------------------------------------
11 .................................... 4 2
12 .................................... 1 1
I参加しようとしたquery
の通りである:
CREATE OR REPLACE VIEW afterJoin AS
SELECT i.*,round(AVG(r.review_rate)) as rate,count(r.user_id) as people_reviewed
FROM table1 i
RIGHT JOIN table2 r ON i.item_id = r.item_id
しかし、これは1行だけを返します。
mysqlはSQLサーバと同等ではありません – Jens
私の間違いを改善していただきありがとうございます –
なぜここに正しく参加していますか?なぜ、左に参加しないのですか?右結合を使用すると、table1の行が存在しない場合でもすべてのレビューを取得します。それはおそらく大丈夫ですが、ほとんどの人が他の方向を考える。あなたはすべてのアイテムとそのレビュー(存在する場合)が必要です。あなたがこのコードを持っている方法では、レビューがない場合に返されるアイテムを取得しません。 –