【发布时间】:2015-06-22 18:02:27
【问题描述】:
有 3 张桌子。
CB 表
CID EC ID Status CType
1001 1001 Active 1540
1004 1001 Active 4
表 M
CID EID EC ID EID-CID
1001 1166 1001 1166_1001
1001 1167a 1001 1167a_1001
1001 1167b 1001 1167b_1001
1001 1168 1001 1168_1001
2014.2071 1043 2018 1043_2014.2071
1004 1166 1001 1166_1004
1004 1167a 1001 1167a_1004
1004 1168 1001 1168_1004
1004 1167b 1001 1167b_1004
第三桌(CM)
EID CID EID-CID EC ID CType
1043 2014.2071 1043_2014.2071 2018 4
我正在尝试内部连接 3 个表。我正在使用下面的查询(我参考了stackoverflow页面Inner Joining three tables) 我的查询没有返回任何内容。但没有给出任何错误信息。
SELECT
M.EID,
CB.CID,
M.[EID-CID],
CB.[CType],
CB.[EC ID]
FROM
(CB INNER JOIN M ON CB.CID = M.CID)
inner join CM on CM.CID=M.CID
结果应该是这样的
CID EID EC ID EID-CID CType
1001 1166 1001 1166_1001 1540
1001 1167a 1001 1167a_1001 1540
1001 1167b 1001 1167b_1001 1540
1001 1168 1001 1168_1001 1540
2014.2071 1043 2018 1043_2014.2071 5.5
1004 1166 1001 1166_1004 4
1004 1167a 1001 1167a_1004 4
1004 1168 1001 1168_1004 4
1004 1167b 1001 1167b_1004 4
【问题讨论】:
-
CM 表中唯一的 CID 的值为 2014.2071,该值与 M 表中的记录匹配,但与 CB 表中的记录不匹配,因此您没有得到任何结果。
-
如果您希望从该查询中返回结果,您可能正在寻找
Left join而不是内部联接,如果不是两个您要加入的表中的一个。这将拉回您要加入的表的值,或者如果没有要拉回的值,它将改为拉回空值。不确定这是否是您要查找的内容,但似乎可能是这种情况。参考链接:w3schools.com/sql/sql_join.asp -
您实际上并没有从 CM 表中选择任何内容,您是否需要加入该表?您的架构/问题有点难以理解,因为您的表、它们的列和它们的数据之间似乎有很多重叠,而没有太多解释为什么。
-
@user254948 它返回所有行但 CType 列只有 5.5 个数据。
标签: sql ms-access-2010 inner-join