【发布时间】:2015-12-11 15:56:33
【问题描述】:
我有一个问题的答案可能太明显了,但我似乎错过了它。
我有两个具有多对多关系的表(table1 和 table2),并且在一个联结表之间(table1_table2)。我可以查询这个联结表以根据参数给我数据,使用说
`SELECT *
FROM Table1_table2
WHERE fk_table2 = x;`
但是,因为不可避免地我在 table1 中有一些记录具有来自 table2 的多个可能值,所以查询完全相反的结果会返回一些具有 table1 外键的记录,而没有我要求的值被排除在 fk_table2 之外。也就是说,在这张表中(我为粗暴的描述道歉)......
fk_table1 |fk_table2
1 | 4
1 | 8
2 | 8
3 | 8
...这个查询...
`SELECT *
FROM table1_table2
WHERE fk_table <> 8;`
..会在table2中返回fk_table1 = 1及其相关值。
所以,这是我的问题:
如果在 fk_table2 中满足过滤条件,那么与 fk_table1 相关的所有其他记录都不会显示的查询的最佳方法是什么?
如果您已经关注,基本上避免fk_table2 = 8 的查询应该不会返回任何内容,因为fk_table1 = 1 已经被考虑在内。
有什么想法吗?
【问题讨论】:
-
@sstan 我目前正在使用 MS Access,尽管我认为这个问题足够普遍,可以标记多个 DBMS。
标签: sql ms-access ms-access-2010