我不知道如何用词来表达标题,但过去 2 天我一直在尝试写一个查询,这让我很沮丧。请参阅下面的表结构:
----------------------
| TABLE A |
----------------------
| FIELD 1 | FIELD 2 |
----------------------
| X | A |
| X | B |
| Y | C |
| Y | D |
| Y | E |
| Z | F |
---------------------
----------------------
| TABLE B |
----------------------
| PK FIELD | FIELD 2 |
----------------------
| 1 | X |
| 2 | Y |
| 3 | Z |
----------------------
1
|
|
|
*
------------------------
| TABLE C |
------------------------
| FK FIELD | FIELD 1 |
------------------------
| 1 | A |
| 1 | B |
| 2 | C |
| 2 | D |
| 3 | E |
------------------------
OK,所以基本上把A表的数据导入DB,作为参考,保证手动添加到B表和C表的数据是正确的。表 A 与任何其他表都没有关系。表 B 和表 C 彼此之间具有一对多的关系(表 B 位于“一”侧)。
现在我正在尝试编写一个选择查询,它将列出从表 B 连接到表 C 的所有项目,其中 [表 B].[字段 2] = [表 A].[字段 1] 但其中 [表 C] .[Field 1] 与 [Table A].[Field 2] 不同。
我期望的结果(如上面的数据)是:
- Y,因为它没有链接到 E
- Z,因为它链接到 E 而不是 F
这是我尝试过的(除其他外):
SELECT [Table B].[Field 2], [Table C].[Field 1], [Table A].[Field 2] AS CorrectItem
FROM [Table B] INNER JOIN
[Table C] ON [Table B].[Field 2] = [Table C].[Field 1] INNER JOIN
[Table A] ON [Table B].[PK Field] = [Table A].[FK Field] AND
[Table C].[Field 1] <> [Table A].[Field 2]
ORDER BY [Table B].[Field 2]
但这显然是错误的,因为它为我提供了数据可能错误的所有可能组合。
我很茫然,我确信这很简单,但我没有看到我要去哪里错了。
谢谢