SQL Select Join
Hier finden Sie den Code für ein MySQL Select Join Befehl. Um diesen Code einfach zu generieren, bieten wir Ihnen hier ein einfaches Tool zur Erstellung eines Select-Join Befehls für einen Datenbankabfrage an.
Wozu dient SQL?
Die Abkürzung SQL bedeutet Structured Query Language, zu Deutsch „strukturierte Abfrage-Sprache“. Sie kommt in der Datenverarbeitung zur Anwendung. Mit diversen Befehlen wie
- Select,
- Delete oder
- Where
organisiert sie Daten in Tabellen. Dank gezielter Anfragen löschen Sie Angaben oder verschieben sie in andere Tabellen. Sie wählen Datengruppen nach Namen oder Werten aus. Die SQL Befehle Select-Join sind ein Teil eines komplexen Systems, das im Geschäft wie im Privaten die Organisation von Daten in Tabellen vereinfacht.
Dank SQL erstellen Sie Strukturen in relationalen Datenbanken, bearbeiten sie und fragen die darauf basierenden Datenbestände ab. Die Sprache gründet auf der relationalen Algebra und verfügt über eine einfache Syntax. Semantisch ist SQL an die englische Umgangssprache angelehnt. In den 70ern verwendete Oracle sie das erste Mal kommerziell in einem Produkt. Mittlerweile ist sie Standard in der Datenverarbeitung.
Was ist die Aufgabe der Join-Verknüpfung?
Die Join-Verknüpfung kommt zur Anwendung, wenn die benötigten Daten sich in verschiedenen Tabellen befinden. In einem Geschäft sind zu einer Bestellung folgende Daten vorhanden:
- Menge,
- Artikel,
- Datum,
- Vertreter.
Sie befinden sich in drei Tabellen: Pro Zeile findet sich ein Verweis auf die zu einzelnen Bestellungen gehörenden Datensätze. Mithilfe von SQL Befehle Select-Join ist es möglich, alle Daten zu einer Bestellung aus den verschiedenen Datensätzen zusammenzufassen.
Ein Join fasst zwei Tabellen zu einem neuen, virtuellen Exemplar zusammen. Ein zweiter Join-Befehl fügt dem Konstrukt eine Dritte hinzu. Der Begriff Select-Join ist eine Erweiterung des Select-Befehls. Join erweitert die Möglichkeit des Auswählens um die Option, Daten aus verschiedenen Tabellen herauszusuchen. Mit einem einfachen Select wählen Sie Daten innerhalb einer einzigen Tabelle aus.
Was ist der Inner Join?
Bei einem Inner Join verbinden Sie zwei Tabellen. Dabei erscheinen die Datensätze, die in beiden Tabellen einen Treffer landen. Ohne Inner Join erscheinen auch diejenigen, welche nur in einer Tabelle vorhanden sind. Sie besitzen für Ihr Geschäft eine Liste mit Kundennummern und eine zweite mit Telefonnummern. Mithilfe der SQL Befehle Select-Join kreieren Sie eine virtuelle Liste, die die Kundennummern mit dem Namen und der Rufnummer verbindet.
Dazu verbinden Sie die Liste Kundennummern per Inner Join mit der Liste Telefonnummern. Die Verknüpfung der Datensätze geschieht über die nach dem ON genannten Spalten Kundennummern.Kundennummer und Rufnummern.Kundennummer. Es sind diverse Unteranfragen möglich. Weiter verknüpfen Sie die neue Tabelle mit der Adressliste, damit als Endergebnis eine Tabelle mit Kundennummer, Name, Rufnummer und Adresse entsteht.
Was ist ein Alias?
SQL Befehle Select-Join benötigen die Verwendung von Alias. Sie dienen dazu, die Abfrage (Querys) mit alternativen Namen für Tabellen und Spalten zu vereinfachen. Die Menge an Codes reduziert sich. Eine weitere Funktion von Alias ist der Schutz der echten Namen von Tabellenfeldern. Indem Sie ein Alias kreieren, ändern Sie den Tabellennamen nicht dauerhaft, sondern nur für ein SELECT-Query.
Dies ist vor allem bei Tabellen und Spalten sinnvoll, die einen langen Namen haben. Dieser verkompliziert die Abfrage. Normalerweise deuten Alias auf den Originalnamen hin. Für die Tabelle „Preise“ findet der Alias „Pr“ Verwendung. In SQL formalisiert sieht das so aus:
SELECT * FROM table_name [AS] alias_name.
Für das Beispiel der Preise heißt das:
SELECT * FROM preise [AS] pr.
Wie funktioniert der Rechner?
Zu Beginn finden Sie als Erklärung die allgemeine Formel für die Verknüpfung mehrerer Tabellen:
SELECT
ALIAS.Spalte [,ALIAS.Spalte][,…]
FROM Tabelle ALIAS [,Tabelle ALIAS][,…]
INNER JOIN Tabelle ALIAS
ON Bedingung
WHERE Bedingung
ORDER BY ALIAS.Spalte [,ALIAS.Spalte][,…]
Sie gilt für SQL Befehle Select-Join, welche die Auswahl bestimmter Daten in mehreren Tabellen erlauben.
Zur Vereinfachung benutzt der Rechner Alias. Sie geben alle gewünschten Angaben ein, damit im Ergebnisfeld der Befehl erscheint. Die Frage am Anfang der Tabelle ist: „Wie lese ich Werte eines oder mehrerer Felder aus zwei Tabellen aus?“ Der Rechner funktioniert nicht, falls Sie Daten aus drei oder mehr Tabellen benötigen. Aus zwei Tabellen bringen Sie so viele Daten zusammen wie Sie brauchen, da Sie die verschiedenen Angaben im Feld durch ein Komma getrennt darstellen.
Wie erhalten Sie den gewünschten Befehl?
Mit zehn Angaben erhalten Sie den gewünschten Befehl. In die ersten zwei Felder geben Sie die Namen der ersten und zweiten Tabelle ein. Bei Feld drei tippen Sie die Angaben der ersten Tabelle, die sie in die neue virtuelle Tabelle übernehmen. Bei mehr als einer Angabe trennen Sie die verschiedenen Wörter durch Kommas. Viertens kommen die Daten in die Tabelle, die aus der zweiten Tabelle in den neuen Eingang finden. Sie benutzen ebenfalls das Komma, um die diversen Wörter zu trennen. Die Anzahl der Angaben ist unlimitiert.
Fünftens nennen Sie das Vergleichsfeld von Tabelle eins. Dasjenige von Tabelle zwei folgt als Sechstes. Die Frage „Nach welcher Bedingung soll geprüft werden?“ beantworten Sie je nach Fall mit gleich, größer als, kleiner als, Like, is null oder is not null. Eine weitere Option ist !=. Mit dem Pfeil links der Zeilen wählen Sie die gewünschte Art aus. Als Nächstes geben Sie den Filter für Tabelle eins ein und überschreiben das Wort Suchfeld. Im zweitletzten Feld wählen Sie wie oben die Bedingung mit dem Pfeil aus. Die Frage „Auf welchen Wert soll geprüft werden?“ beantworten Sie als Letztes.
SQL Befehle Select-Join: ein Beispiel
Sie besitzen von Ihren Kunden eine Liste mit Kundennummern, Namen und Adressen so wie eine mit Kundennummern und Geburtstagen Das Ziel ist es, die Vor- und Nachnamen mit den Geburtstagen zusammenzubringen von allen Kundennummer ab dem 10. Eintrag. Sie erstellen dazu eine neue Tabelle mithilfe des Select-Join-Befehls. Die Namen der Tabellen sind adressen und geburtstage. Aus der ersten Tabelle übernehmen Sie nachname, vorname und aus der zweiten geburtstage. Vergleichsfeld der Tabelle eins lautet adresse.nachname, das der zweiten geburtstag.nachname. Die Bedingung ist in diesem Fall =. Als letztes gilt: kundennummer > 10. Im Ergebnis-Rechteck erscheint Folgendes:
„Alle Werte bestimmter Felder ohne mehrfache Zeilen aus einer Tabelle auslesen.
SELECT A.nachname, A.vorname, B.geburtsdatum FROM adressen A INNER JOIN geburtstage B ON A.adresse.nachname = B.geburtstag.nachname WHERE A.kundennummer > ’10‘.“
Der Buchstabe A ist der Alias für Tabelle eins, B steht für Tabelle zwei. Sie benutzen den Rechner für die Verbindung von Daten, die sich in zwei verschiedenen Tabellen befinden. Mithilfe des Befehls erstellen Sie die neue Tabelle, die alle gewünschten Informationen enthält.
Häufig gestellte Fragen
Was genau ist ein Select/Join-Befehl bei einer SQL-Abfrage?
Was ist die JOIN-Klausel für den SELECT-Befehl?
Was ist bei der Verknüpfung von Tabellen über die JOIN-Klausel zu beachten?
Häufig gestellte Fragen
Was genau ist ein Select/Join-Befehl bei einer SQL-Abfrage?
Der Select/Join-Befehl ist die Kombination des Select-Befehls mit einem Join-Attribut. Mit Hilfe des Select-Befehls lassen sich die Daten und Inhalte einer mySQL-Tabelle zurückgeben. Mit diversen Parametern kann man die Suche einschränken und verfeinern, sodass nicht gewünschte oder nicht benötigte Daten gar nicht angezeigt werden. Das Join-Attribut erweitert die einfach Select-Abfrage um die Möglichkeit, auch Daten und Inhalte von anderen Tabellen in die Abfrage mit einfließen zu lassen. Dies ist mit der Select-Abfrage ohne Weiteres nicht möglich, da dort nur eine bestimmte Tabelle abgefragt wird.
Einfache Joins werden bereits durch den WHERE-Paramater erzeugt, wenn auch meistens unbewusst.
Was ist die JOIN-Klausel für den SELECT-Befehl?
Für die einfachste Join-Klausel ist noch nicht einmal ein bestimmtes Attribut notwendig. Die Definition geschieht einfach anhand von Kommata, mit der die Daten verkettet werden. Man spricht hier von einem implicit join. Die Syntax lautet SELECT 'nachname'.'namensliste', 'geburtsdatum'.'geburtstagsliste' FROM 'namensliste', 'geburtstagsliste'. Der Befehl führt dazu, dass sämtliche vorhandenen Daten miteinander verknüpft, also "gejoined" werden. Im Beispiel ist das allerdings nicht gewünscht, denn wenn in der Namensliste 10 Einträge sind und in der Geburtstagsliste ebenfalls, dann erhalten wir nun 100 Ergebnisse. Der Grund ist, dass mit diesem Befehl alle Inhalte der Tabelle "Namensliste" mit der Tabelle "Geburtstagsliste" verknüpft werden. Das Ergebnis ist also 10 * 10 = 100. In entsprechend großen Datensätzen würde sich die Anzahl der zurückgegebenen Ergebnissen pro Eintrag in der referenzierten Tabelle um den Inhalt der ursprünglichen Tabelle multiplizieren, daher ist beim ausführen einen implicit joins Vorsicht geboten. Ist der Datenbestand groß, kann eine solche Abfrage den Datenbankserver oder die Datenbankinstanz schnell zum Absturz oder an die Belastungsgrenzen bringen.
Um ein brauchbares Ergebnis zu erhalten, welches frei von unerwünschten Verkettungen ist, muss ein Befehl abgesetzt werden, der zwei Spalten miteinander vergleicht und somit eine Bedingung zwischen den beiden Tabellen herstellt. Dies erreicht man durch einen sogenannten LEFT JOIN. Mit dem Befehl SELECT 'nachname', 'vorname' 'geburtstag' FROM 'namensliste' LEFT JOIN 'geburtstagsliste' ON 'namensliste'.nachname'='geburtstagsliste'.'nachname' erhält man die gewünschte Ausgabe. Alle Namen sind nun dem entsprechenden Geburtstag zugeordnet, jedoch nicht nach allen Möglichkeiten miteinander kombiniert, sondern der Kondition ON entsprechend zugordnet. Der Ausdruck LEFT JOIN bezeichnet zugleich die Funktionsweise: alle Konditionen, die links des Join-Attributes stehen, werden den rechten Konditionen verknüpft.
Eine weitere Möglichkeit der Verknüpfung ist der RIGHT JOIN. Hier wird zuerst die rechte Seite des JOIN interpretiert und dann mit der linken Seite verglichen. Je nachdem, welche Inhalte die verknüpften Tabellen haben, kann es zu unterschiedlichen Ergebnissen kommen. Existiert beispielsweise in der Tabelle "Namensliste" ein Herr mit dem Nachnamen "Krüger", aber in der "Geburtstagsliste" nicht, so wird in der Ausgabe per LEFT JOIN eine Zeile mit dem Inhalt NULL ausgegeben, da in der "Geburtstagsliste" kein Herr Namens "Krüger" gefunden wurde. Mit einem RIGHT JOIN würde diese Zeile mit dem Inhalt NULL gar nicht auftauchen, da der Inhalt in der zuerst interpretierten Tabelle nicht existierte und somit auch nicht verglichen wurde.
Was ist bei der Verknüpfung von Tabellen über die JOIN-Klausel zu beachten?
Wer eine Join-Klausel im Select-Befehl verwendet, der sollte sich im Vorfeld der Abfrage in etwas darüber Gedanken machen, welche Funktion der jeweilige Join-Typ hat und was für Ergebnisse zu erwarten sind. Tauchen in der Abfrage viele NULL-Werte auf, empfiehlt es sich, testweise die Join-Richtung umzukehren. Außerdem ist penibel darauf zu achten, welche Syntax man benutzt. Das Join-Attribut gehört in der Verwendung bei großen Datenbankabfrage zu den komplexesten Befehlen, die mySQL zu bieten hat. Viele Entwickler und Datenbankadministratoren beißen sich bei der Fehlersuche sprichwörtlich die Zähne aus.
Viele mySQL-User sind der Meinung, dass eine einfache Verkettung von Ausgaben (implicit join) kein "richtiger" Join ist, weil es kein Join-Attribut im Befehl enthält. Doch in der Praxis lassen sich durch einen implict join durchaus brauchbare Ergebnisse abfragen. In Kombination mit dem WHERE-Attribut können somit die zurückgegebenen Ergebnisse eingeschränkt und anschließend weiterverarbeitet werden.