hilfreiche-tools.de  ⇒ SQL Befehle  ⇒ SQL Befehle Select-Join

SQL Befehle Select-Join

Wir bieten Ihnen hier ein einfaches Tool zur Erstellung eines Select-Join Befehls für einen Datenbankabfrage.

Mittels JOIN lassen sich Werte über mehrere Tabellen auslesen. Betrachtet wird hier der INNER JOIN. Aufbau :

SELECT
ALIAS.Spalte [,ALIAS.Spalte][,...]
FROM Tabelle ALIAS [,Tabelle ALIAS][,...]
INNER JOIN Tabelle ALIAS
ON Bedingung
WHERE Bedingung
ORDER BY ALIAS.Spalte [,ALIAS.Spalte][,...]

Wie lese ich Werte eines oder mehrerer Felder auf zwei Tabellen aus?

Name der 1. Tabelle  
Name der 2. Tabelle  
Name der Felder aus Tabelle 1 (durch Komma getrennt)  
Name der Felder aus Tabelle 2 (durch Komma getrennt)  
Vergleichsfeld aus Tabelle 1?  
Vergleichsfeld aus Tabelle 2?  
Nach welcher Bedingung soll geprüft werden?  
Filter für Tabelle 1  
Nach welcher Bedingung soll geprüft werden?  
Auf welchen Wert soll geprüft werden?  



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 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.

 

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.

 



Die Frage wurde eingereicht.

Möchtest du über die Antwort informiert werden gib deine Emailadresse an.

Wir nutzen Google Produkte die Cookies setzen, mit der Nutzung der Seite stimmen Sie zu. mehr Infos