verwendetes Datenbanksystem: <Oracle>
Hallo zusammen
ich habe ein komisches Verhalten bei einer Abfrage
SELECT COUNT(*) FROM table1; = 38000 Datensätze
SELECT * FROM table1; = 38000 Datensätze
SELECT COUNT(*) FROM table2; = 131461 Datensätze
SELECT * FROM table2; = 131461 Datensätze
Jetzt der Fehler:
SELECT COUNT(*) FROM table1 a
LEFT OUTER JOIN table2 b ON b.ID = a.ID; = 38819 Datensätze
Soweit ich das gelernt habe wird alles aus der linken Tabelle angezeigt und falls in der rechten etwas vorhanden ist, wird das angezeigt.
Kann mir da jemand auf die Sprünge helfen? Insgesamt sind es 5 Tabellen die aufeinander verweisen. Wichtig ist dass nur die Anzahl der ersten Tabelle stimmt.
Hi,
in table2 kommt jede Id offensichtlich 0-n mal vor.
Der Titel ist im übrigend denkbar schlecht gewählt. LEFT OUTER JOIN funktioniert ganz sicher so wie er soll 😃.
Ein JOIN verbindet alle Datensätze miteinander die zum Kriterium passen. In deinem Fall verknüpft er alles aus a mit allem aus b was gleiche ID hat.
Wenn in b 5 Datensätze mit der selben ID aus a sind, dann kriegst du den Datensatz aus a mit allen 5 Datensätzen aus b kombiniert.
Ich vermute das ist dein Denkfehler.