JOIN
JOIN alleine macht noch keinen Frühling. Mithilfe JOINs lassen sich mehrere Tabellen für ein SELECT verbinden, die Königsdisziplin relationaler Datenbanken.
Sie sind ja angewiesen, die Daten innerhalb der DB so zu speichern, dass diese
- keine Redundanzen aufweisen
- keine Inkonsistenzen aufweisen
und deswegen normalisieren Sie Ihre Datenstruktur.
Damit das Anzeigen nachher wieder menschenlesbar wird, sind Sie angehalten, die verschiedenen getrennten Tabellen wieder zu einem Ganzen zusammenflechten, das man lesen kann/in seinem Skript verwenden will.
Der Code
mySQL JOIN Beispiel
SELECT
attribut1,
attribut2,
attribut3
FROM
tabellename1
[LEFT, RIGHT, INNER, FULL OUTER] JOIN
tabellenname2
ON
tabellenname1.attribut13 = tabellenname2.attribut13
WHERE
…
LEFT/RIGHT JOIN
Mit LEFT JOIN treffen Sie die Aussage, dass die linke, Originaltabelle (Beispiel: tabellename1) die wichtigere ist. Sie hätten gerne Ergebnisse aus der schwachen Tabelle für alle Treffer in der starken.
Beim RIGHT JOIN ist es genau andersrum: die rechte (im Beispiel tabellename2) ist die starke, für alle Datensätze hieraus hätte ich gerne Ergebnisse, wenns Matches durch Fremdschlüssel in tabellenname1 gibt, die bitte auch.
INNER/FULL OUTER JOIN
Ein anderer JOIN-Ansatz verfolgen diese zwei.
INNER JOIN zeigt nur Ergebnisse an, die wirklich in allen gejointen Tabellen Ergebnisse aufbieten können.
FULL OUTER JOIN zeigt alle Ergebnisse an, die Treffer in irgendeiner Tabelle liefern und ist so der Produzent der voluminösesten Ergebnisse.
mySQL JOIN Pro-Tip
Benutze LEFT JOIN
Ich weiss, viele JOINs führen nach Rom.
Eingedenk der normalen Schreibweise, bei der die starke Tabelle links/zuerst in der Abfrage steht und die schwache danach und dass man alle Ergebnisse für die starke will, ist LEFT JOIN eigentlich die beste Wahl.
Nicht, dass es keine Szenarien für die anderen JOINs gäbe (looking at you, INNER JOIN!), doch die no-brains-at-operating-temperature-Haltung oktroiert geradezu LEFT JOINs.
mysql Workshop Übersicht