この質問に正しく言い方をするのは正確ではありませんので、データから始めます。テーブル1にテーブル2に一致する2行がある場合
この2つのテーブルを皮切り:
Table 1:
user_id | equipment_id
------ | ------
1 | 2
1 | 3
1 | 6
2 | 2
2 | 6
Table 2:
equipment_id | exercise_id
------ | ------
2 | 1
3 | 2
6 | 2
私は、この第三のテーブルを作成したいと思います
:
Table 3:
user_id | exercise_id
------ | ------
1 | 1
1 | 2
2 | 1
単純なINNERがデータを取得するために、JOINのように思えるが、私は実行しています2列目のトラブルに。 user_id 1に表2に示す機器の両方がある場合にのみ、その行が表示されます。いずれかの機器が見つからない場合、user_id 2のようにデータを挿入しないようにします。また、それぞれの機器に対してuser_id 1の2つのインスタンスを取得しないでください。
この
は、私がこれまで持っているコードです:INSERT INTO Table3 (user_id, exercise_id)
SELECT user_id, exercise_id
FROM Table1
INNER JOIN Table2
ON Table2.equipment_id = Table1.equipment_id
私が得る結果である除去する必要がある行を持つこれが示された:
Table 3:
user_id | exercise_id
------ | ------
1 | 1
1 | 2
1 | 2 <--- duplicate of row above
2 | 1
2 | 2 <--- user 2 doesn't have equipment 3, so shouldn't be included
任意の助けを結果を制限する上だろう大変感謝します。ありがとうございました!
サンプルデータと予想される出力が一致しないと思います。あなたは再確認できますか? – Utsav
あなたのテーブルには、どのユーザが運動をしているか、どのユーザが運動していないかを示すための関係がないため、あなたの関係は正しくないと思います。 –
* user_id 1には両方の機器があります* - あなたが意味することを明確にすることはできますか?テーブル2には3つの機器があります – GurV