我有一个像下面这样的查询,返回我期望的正确行数。 (它必须匹配类似的查询,该查询返回相同的数据集,但具有与其他相关表不同的关联信息。
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
但是一旦我添加其他内部联接,我实际上会获得更多行。我认为内连接只在连接的两边找到信息时返回行,所以我希望得到相同或更少的行。但我的两倍左右。
例如:
SELECT *
FROM LK
INNER JOIN STC ON LK.V = STC.VI
INNER JOIN VK ON LK.V = VK.ID
INNER JOIN K AS A ON VK.AIN = A.KNN
LEFT OUTER JOIN BC ON LK.BC = BC.ID
LEFT OUTER JOIN K AS LT ON ISNULL(BC.ZA, LK.VH) = LT.KNN
WHERE
LT.KI IS NOT NULL AND LT.KS = 0
OR
LT.KI IS NULL
ORDER BY
LK.Z
这有意义吗?如何再添加两个内部联接会导致返回更多行?
更重要的是我的实际问题,我如何调整第二个查询,以便返回与第一个查询相同的行,但是使用连接表中的额外列?
答案 0 :(得分:15)
如果每个LK有多个VK,那么它将增加行数。我不明白你的架构足以解决它。