Beispiel Tabellen:
Tab1 (Mitarbeiter):
MAID | Name | Vorname | GID |
1 | Müller | Anton | 1 |
2 | Schmidt | Petra | 2 |
3 | Richter | Paul | NULL |
Tab2 (Gruppen):
GID | Gruppe |
1 | Team A |
2 | Team B |
3 | Team C |
Situation:
Auf Seiten der Mitarbeiter ist Zeile 3 keinem Team zugeordnet, auf Seiten der Gruppen ist Team C keinem Mitarbeiter zugeordnet.
SQL Join
In SQL selber gibt es mehr Möglichkeiten zu Tabellen zusammenzuführen als in Qlik. In Qlik stehen ihnen folgende Möglichkeiten bereit, wobei die erste Variante ehr als Fehler zu betrachten ist.
Cross Join
Wenn Sie zwei Tabellen zusammenführen, welche über keinen gemeinsamen Schlüssel verfügen spricht man von einem sogenannten Cross Join, Das Ergebnis dieses bezeichnet man auch als kartesisches Produkt. In der Regel ist dieses Ergebnis nicht richtig, da jede Zeile mit jeder Zeile multipliziert wird.
Dieses passiert in Qlik wenn Sie zwei Tabellen zusammenführen welche keine Verbindung über Gleichnamigkeit haben.
Das Ergebnis des Cross Joins würde für unser Beispiel wie folgt aussehen:
MAID | Name | Vorname | GID | Gruppe |
1 | Müller | Anton | 1 | Team A |
2 | Schmidt | Petra | NULL | Team A |
3 | Richter | Paul | NULL | Team A |
1 | Müller | Anton | NULL | Team B |
2 | Schmidt | Petra | 2 | Team B |
3 | Richter | Paul | NULL | Team B |
1 | Müller | Anton | NULL | Team C |
2 | Schmidt | Petra | NULL | Team C |
3 | Richter | Paul | NULL | Team C |
usw. | usw. | usw. | usw. | usw. |
Mitarbeiter:
SQL Select
MAID
, Name
, Vorname
, GID
From Mitarbeiter;
Gruppen:
join (Mitarbeiter)
SQL Select
GID AS _GID
, Gruppe
From Gruppen;
Outer Join
Beim Outer Join bleiben alle NULL Werte beider Tabellen erhalten
MAID | Name | Vorname | GID | Gruppe |
1 | Müller | Anton | 1 | Team A |
2 | Schmidt | Petra | 2 | Team B |
3 | Richter | Paul | NULL | NULL |
NULL | NULL | NULL | 3 | Team C |
Mitarbeiter:
SQL Select
MAID
, Name
, Vorname
, GID
From Mitarbeiter;
Gruppen:
join (Mitarbeiter)
SQL Select
GID
, Gruppe
From Gruppen;
Inner Join
Der Inner Join liefert das Gegenteil des Outer Join – alle NULL Werte werden eliminiert.
MAID | Name | Vorname | GID | Gruppe |
1 | Müller | Anton | 1 | Team A |
2 | Schmidt | Petra | 2 | Team B |
Mitarbeiter:
SQL Select
MAID
, Name
, Vorname
, GID
From Mitarbeiter;
Gruppen:
inner join (Mitarbeiter)
SQL Select
GID AS _GID
, Gruppe
From Gruppen;
Left Join
NULL Werte der linken Seite bleiben erhalten.
MAID | Name | Vorname | GID | Gruppe |
1 | Müller | Anton | 1 | Team A |
2 | Schmidt | Petra | 2 | Team B |
3 | Richter | Paul | NULL | NULL |
Mitarbeiter:
SQL Select
MAID
, Name
, Vorname
, GID
From Mitarbeiter;
Gruppen:
left join (Mitarbeiter)
SQL Select
GID AS _GID
, Gruppe
From Gruppen;
Right Join
NULL Werte der rechten Seite bleiben erhalten.
MAID | Name | Vorname | GID | Gruppe |
1 | Müller | Anton | 1 | Team A |
2 | Schmidt | Petra | 2 | Team B |
NULL | NULL | NULL | 3 | Team C |
Mitarbeiter:
SQL Select
MAID
, Name
, Vorname
, GID
From Mitarbeiter;
Gruppen:
right join (Mitarbeiter)
SQL Select
GID AS _GID
, Gruppe
From Gruppen;
Mehr Infos zum SQL Join finden Sie hier: https://de.wikipedia.org/wiki/Join_(SQL)
Warum man in Qlik nicht unbedingt joinen muss
Da Qlik assoziatives Datenmodell basiert ist es nicht unbedingt erforderlich Tabellen zu joinen. Joinen kann je nach Tabellenzeilen und Spalten auch sehr zeitintensiv werden. Bei einfachen Datenmodellen empfiehlt sich allerdings eine Vereinfachung auf das sogenannte DMF oder auch Star Schema. Siehe auch wie Qlik Daten lädt.