2010-08-18 9 views
10

Ich habe eine Abfrage wie die folgende, die die richtige Anzahl von Zeilen zurückgibt, die ich erwarten würde. (Es hat eine ähnliche Abfrage übereinstimmen, die die gleichen Datensätze zurückgibt, jedoch mit unterschiedlichen zugehörigen Informationen aus anderen verwandten Tabellen.Hinzufügen eines INNER JOIN zu einer Abfrage sollte die Anzahl der zurückgegebenen Zeilen nicht erhöhen richtig?

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 

Aber sobald ich andere innere hinzufügen verbindet ich mehr Zeilen tatsächlich zurück. Ich dachte, ein INNER JOIN nur Zeilen zurückgibt, wenn die Information auf beiden Seiten der Verbindung gefunden wird, so dass ich erwartet, entweder die gleichen oder weniger Zeilen zurück zu bekommen, aber ich etwa doppelt so viel

zum Beispiel:..

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 

Macht das Sinn, wie kann man zwei weitere innere Verknüpfungen hinzufügen? Es wird mehr Zeilen zurückgegeben?

Und mehr auf den Punkt von meinem eigentlichen Problem, wie ich die zweite Abfrage einstellen kann, so dass es die gleichen Zeilen wie die erste Abfrage gibt aber mit den zusätzlichen Spalten aus den verknüpften Tabellen?

Antwort

15

Wenn mehr als ein VK pro LK vorhanden ist, wird die Anzahl der Zeilen erhöht. Ich verstehe dein Schema nicht genug, um es zu beheben.

+0

+1. Ein bisschen kurz vielleicht aber genau. –

+0

Natürlich .. Das macht Sinn .. Schätze, es war einer dieser Wald und die Bäume Dinge. – Kurt

+1

Wofür stehen VK und LK? Ich kenne nur Fremdschlüssel und Primärschlüssel. – systemovich

Verwandte Themen