< < Vorheriger BeitragNächster Beitrag > >

Tabellenverknüpfung durch JOINs (Stefanie Eckmann)




1. Wozu Joins?

  • Vermeidung von Problemen, die sich durch das Speichern von Daten in einer großen Tabelle ergeben. 
  • Wichtig: In einer Tabelle befinden sich immer zusammengehörige Angaben (Angaben, die zu einer Entität gehören)
  • Durch kleinere (aber mehrere) Relationen kann Redundanz vermieden werden.
  • Mehr Flexibilität bei der Analyse der Daten, da die einzelnen Tabellen auf verschiedene Arten miteinander verknüpfbar sind.

2. Was sind Joins?

  • Verknüpfungen zwischen zwei oder mehr Tabellen in mySQL
  • Es gibt verschiedene Arten von Joins

    Unterschiedliche Joins (tlw. mit Bedingungen)

3. Wie erstellt man Joins?

3.1. Kreuzjoin

  • Verknüpfung von Tabllen ohne Verknüpfungsbedingung - hier werden alle Datensätze einer Tabelle mit allen Datensätzen aus einer anderen Tabelle kombiniert
  • Die Verknüpfung erfolgt über den Primary Key einer Tabelle, der einem Key in einer anderen Tabelle entspricht (er bildet in der anderen Tabelle dann den Foreign Key).
  • Problem: Hier werden teilweise Daten gedoppelt, deswegen bietet es sich an, eine Bedingung anzugeben.

3.1.1. Vor dem Join: verschiedene Tabellen anlegen

Über die Funktion "Tabelle anlegen" kann eine Tabelle erzeugen. Hierzu gibt man den Titel der Tabelle und die Anzahl der gewünschten Spalten an.

/var/cache/html/dhlehre/html/wp content/uploads/2017/01/1483709375 Schritt1

Nun müssen verschiedene Daten - z.B. die Spaltennamen, der Spaltentyp und ihre Länge/Werte angegeben werden. Hier: Spalte 1 trägt den Namen "ID" mit dem Typ "INT" als Länge wurde hier 10 angegeben. Spalte 2 erhält den Titel "translation" und den Typ "VARCHAR" (variable characters) bei einer Länge von 500 Zeichen.

/var/cache/html/dhlehre/html/wp content/uploads/2017/01/1483709613 Schritt1 2

Danach kann für jede Spalte die ID angegeben werden sowie in diesem Beispiel die englische Übersetzung der einzelnen Sätze.

/var/cache/html/dhlehre/html/wp content/uploads/2017/01/1483710044 Schritt1 3

Das Ergebnis sollte dann folgendermaßen aussehen:

/var/cache/html/dhlehre/html/wp content/uploads/2017/01/1483710180 Schritt1 4

3.1.2. Joins erstellen - Tabellen verknüpfen

Kreuzjoin ohne Bedingung:

SELECT * FROM tokens join translations

Kreuzjoin mit Bedinungen:

SELECT* FROM tokens join translations on (tokens.zeile = translations.ID)

Hier werden die Werte ausgeblendet, die keine Entsprechung in einem der Felder haben.

SELECT * FROM tokens left join translations on (tokens.zeile = translations.ID)

oder mit Verwendung der Befehle USING oder ON:

SELECT *,group_concat(token ORDER BY pos SEPARATOR ' ') FROM tokens join translations on (tokens.zeile = translations.ID) GROUP BY zeile ORDER BY tokens.ID

Hier werden auch solche Werte angezeigt, die über keine Entsprechung in der anderen Tabelle verfügen.

3.2. Selfjoin

  • Die (wiederholte) Verknüpfung einer Tabelle mit sich selbst.
  • Ist ebenfalls auf unterschiedliche Arten und mit unterschiedlicher Komplexität der Bedingungen möglich.

einfacher Selfjoin - zeigt die Spalten nebeneinander an:

SELECT* from tokens a join tokens b join tokens c on (a.ID = b.ID-1 AND a.ID = c.ID-2)

Selfjoin ohne Spaltendopplung - zeigt nur bestimmte Spalten nebeneinander an:

SELECT a.ID,b.ID,c.ID,a.token,b.token,c.token,IF((a.zeile=b.zeile AND b.zeile=c.zeile),a.zeile,'') from tokens a join tokens b join tokens c on (a.ID = b.ID-1 AND a.ID = c.ID-2) WHERE a.zeile=b.zeile AND b.zeile=c.zeile
< < Vorheriger BeitragNächster Beitrag > >

Schreibe einen Kommentar