Wozu braucht man den "Inner Join"-Befehl in SQL?

5 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du machst mit inner join eine tabellenübergreifende Abfrage auf Tabellen in einer 1:n-Relation, die ein eindeutigeres Ergebnis liefert, als in diesem Falle ein WHERE-Konstrukt

Du MUSST einen Join machen um daten aus mehreren tabellen abzufragen.

wenn du "... from tabA, tabB ..." wird das letztendlich auch in einen Join umgewandelt.

Ein einfaches where reicht nicht aus um tabellen zu verbinden.

Beispiel: "Select * from tabA where tabBSpalte = 1" wird dir einen Fehler liefern, dass diese Spalte nicht bekannt ist.

Bei joins gibt es dann noch verschiedene Arten des Join, wobei der Inner Join aussagt dass ein Datensatz in beiden Tabellen vorhanden sein muss.

"... from tabA INNER JOIN tabB ON tabA.id = tabB.A_id where tabA.field = "x" ..."

Die Spalte die verbindet wird in der ON Clause definiert.


wotan38  12.03.2018, 10:48

Natürlich kann man Tabellen ohne JOIN verknüpfen. Ich habe eine hochkomplexe Anwendung mit 57 Datenbanktabellen bei einem Kunden laufen. Ich benutze überhaupt keinen JOIN, mache alle Verknüpfungen mit WHERE, weil das gerade bei kniffligen Verknüpfungen transparenter ist. Ich habe z.B. Verknüpfungen mit der eigenen Tabelle (Zuchtbuch, wo Tiere mit ihren Eltern und Großeltern verknüpft werden, die in der selben Tabelle stehen). Mit JOIN wüsste ich gar nicht, wie ich das hinbekommen sollte.

Mit WHERE bekommt man jede Verknüpfung hin. So wie ich das hinschreibe, macht die Datenbank das auch, auch wenn ich nicht den Primär- und Fremdschlüssel verwenden kann.

Der Informatikunterricht beschränkt sich auf elementaren Grundfunktionen und die Standardanwendung mit gängigen Schulbeispielen. Die Datenbank kann weitaus mehr.

0

um 2 tabellen bei einer Abfrage zu verbinden

http://www.datenschwamm.de/4/sql.php?p=join#join


HansPieter 
Beitragsersteller
 12.01.2010, 15:12

dazu kann man aber auch den um längen einfacheren Where ...=... befehl nehmen wie oben beschrieben

0
hmshin  12.01.2010, 16:47
@HansPieter

Nein, ein where und ein Join sind völlig verschiedene Sachen.

0

hat auch den vorteil, dass du nicht mehrere abfragen erstellen musst, um an das gleiche ergebnis zu kommen

inner join ist nur eine andere Schreibweise für denselben Sachverhalt. Man kann dasselbe auch mit select ... from ... where erreichen. Die where-clause definiert dann eben, wie die Tabellen gejoint werden. Reine Geschmackssache.