【发布时间】:2013-05-06 06:59:50
【问题描述】:
我正在使用 SQL Server 2008 并尝试连接来自 4 个不同表的数据,这些表是相关的,因此第 2 个表是第 1 个表的子表,第 3 和第 4 个表是第 2 个表的两个子表,我正在使用下面的语句输出结果,但不是得到 9 条不同的记录(5 条来自 CR 表,4 条来自 CX 表),我得到了 20 条记录,其中来自第 3 和第 4 表的数据重复。
如果我省略对表 CX 的引用,我会得到所需的 5 个结果,而省略对 CR 的引用会得到所需的 4 个结果,但是我需要返回两个表的 9 个结果,而不是我得到的 20 个记录。我会发布屏幕截图,但由于声誉问题而无法发布。
SELECT
LS.SITECODE,
ep.EP_KEY,
C0.LEASEID,
C0.SDATE AS LeaseStart,
C0.EDATE AS LeaseExpiry,
CR.EFFDATE AS RenewalDate,
CX.SDATE AS ReviewDate
FROM LS
INNER JOIN FMEP AS ep ON LS.SITECODE = ep.SITECODE
INNER JOIN C0 ON ep.EP_KEY = C0.EP_KEY
INNER JOIN CR ON C0.LEASEID = CR.LEASEID
INNER JOIN CX ON C0.LEASEID = CX.LEASEID
WHERE ls.SITECODE = 2121
过去几个小时我一直在寻找解决方案,但是由于我对 SQL 不熟悉,我显然没有使用正确的搜索词。我是 SQL 新手,所以如果我难以理解您的回答,请耐心等待,并提前感谢您抽出宝贵时间查看此内容。
【问题讨论】:
-
示例数据,预期输出......
-
您可以使用SQL Fiddle添加一些数据样本和表模式。
-
根据您对省略连接的描述,给定 CR 有 5 个leaseid 值,CX 有 4 个leaseid 值;而且它们是内部连接的,我不明白您为什么期望结果中有 9 行?
标签: sql sql-server inner-join