したがって、私の問題に関係する 3 つのテーブルがあります。2 つの通常のテーブルと、has many の結合テーブルと、many 関係に属するテーブルがあります。それらは次のようになります。
table1
--id
--data
table2
--id
--data
table1_table2
--table1_id
--table2_id
したがって、私の質問は、table1 の 1 つの項目に対して table1_table2 に 1 つ以上の値を持つものを (結合を使用して) 照会する方法です。例えば:
Table 1
+----------+
|id | data |
+----------+
|1 | none |
+----------+
|4 | match|
+----------+
Table 2
+----------+
|id | data |
+----------+
|1 | one |
+----------+
|2 | two |
+----------+
table1_table2
+----------------------+
|table1_id | table2_id |
+----------------------+
|1 | 1 |
+----------------------+
|4 | 1 |
+----------------------+
|4 | 2 |
+----------------------+
テーブル 2 の行 1 と行 2 の両方への結合を介したリンクがあるため、テーブル 1 の行 ID 4 に一致するクエリが必要です。
少し不明確だったかもしれませんが、table1_table2 を from としてではなく結合として使用しています。テーブル 2 の 1 と 2 の両方に一致することを確認する必要があります。
これまでの私のクエリは次のとおりです...
SELECT DISTINCT table1.id,
table2.data
FROM table1
LEFT JOIN table1_table2 ON table1.id = table1_table2.table1_id
LEFT JOIN table2 ON table2.id = table1_table2.table2_id
テーブル 1 のエントリがテーブル 2 の 1 と 2 の両方に一致するようにする場所が必要です。
私が探している出力は次のようになります。
+---------------------+
|table1.id|table2.data|
+---------------------+
|4 |one |
+---------------------+
|4 |two |
+---------------------+