2010-08-18 43 views
10

我有一個像下面這樣的查詢,它返回我期望的正確的行數。 (它以匹配返回相同的數據集,但與其他相關表不同的關聯信息的類似查詢。將INNER JOIN添加到查詢不應增加正確返回的行數?

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 

這是否有意義?如何添加兩個內連接r在更多的行被返回?

更多關於我的實際問題,我如何調整第二個查詢,以便它返回與第一個查詢相同的行,但與連接表中的額外列?

回答

15

如果每個LK有多個VK,那麼它會增加行數。我不明白你的模式足以修復它。

+0

+1。有點短但可能是準確的。 – 2010-08-18 08:58:39

+0

當然..這是有道理的..猜猜這是森林和樹木之一。 – Kurt 2010-08-18 10:54:38

+1

VK和LK代表什麼?我只知道外鍵和主鍵。 – systemovich 2011-05-26 13:14:39