2つのテーブルを結合し、各アイテムごとに1つの行を取得しようとしています。レーティングのデフォルト値は45です。カテゴリ内に異なるレーティングがあるたびに、各アイテムの行が複製されます。以下に、スキーマ、データ、および結果の例を示します。SQL JOIN行を複製する
表1
-------------------------- ofid
|アイテム|カテゴリ
--------------------------
1 |アイテム1 | cat1
2 |アイテム2 | cat1
3 | item3 | CAT1
表2
---------------------------
ofid |評価|カテゴリ
---------------------------
1 | 37 | cat1
2 | 42 | cat1
3 | 45 | CAT1
結果
------------------------------------
ofid |アイテム|評価|カテゴリ
------------------------------------
1 |アイテム1 | 37 | cat1
1 |アイテム1 | 42 | cat1
1 |アイテム1 | 45 | cat1
2 |アイテム2 | 37 | cat1
2 |アイテム2 | 42 | cat1
2 |アイテム2 | 45 | cat1
3 | item3 | 37 | cat1
3 | item3 | 42 | cat1
3 | item3 | 45 | CAT1
期待される結果
------------------------------------
ofid |アイテム|評価
------------------------------------
1 |アイテム1 | 37
2 |アイテム2 | 42
3 | item3 | 45
問合せ:
SELECT p.ofid,p.item,r.rating FROM table1 AS p INNER JOIN table2 AS r ON p.category = r.category WHERE p.category = "cat1" GROUP BY p.ofid,p.category,r.rating
は、私は、JOIN、LEFT JOINを、RIGHT ....助けを登録しよう、DISTINCT追加しようとしましたか?
ありがとうございます。
select文では3つの列しか選択されていないが、 "期待される結果"には4つの列があることに注意してください。私はこれがタイプミスだと思う。 – larsks
かなり正確です。編集されました。キャッチをありがとう。 – zero742