使用连接表中的标记过滤SQL结果

时间:2016-02-09 06:40:32

标签: php sql junction-table

我正在尝试根据一组testID来选择tagID。我想选择所有使用一组标签中的所有标签标记的测试。

例如,如果我希望所有testID标记为tagFK 1 and 2,我希望只返回testID = 7。 如果我希望testID标记为tagFK = 2,我希望能够返回testID 7 and 8

测试表

+--------+--------+
| testID |  name  |
+--------+--------+
|    6   | string |
+--------+--------+
|    7   | string |
+--------+--------+
|    8   | string |
+--------+--------+
|    9   | string |
+--------+--------+

junc_test_tag表

+--------+-------+
| testFK | tagFK |
+--------+-------+
|    7   |   1   |
+--------+-------+
|    7   |   2   |
+--------+-------+
|    8   |   2   |
+--------+-------+
|    8   |   3   |
+--------+-------+
|    9   |   3   |
+--------+-------+
|    9   |   4   |
+--------+-------+

我尝试了什么:

SELECT testID 
FROM test
RIGHT JOIN junc_test_tag ON test.testID = junc_test_tag.testFK
WHERE junc_test_tag.tagFK = 1
OR junc_test_tag.tagFK = 2; 

此查询返回重复项和不相关的行。我希望SQL结果只是相关的行。在这种情况下,只需从测试表中排第7行。

如何构建查询以实现我正在寻找的结果?

0 个答案:

没有答案