PostgreSQL Grundkurs

Datensätze aus verschiedenen Tabellen verbinden

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Verbindung von zwei Tabellen mit gleicher Spaltenanzahl, um deren Zeilen in einer Ausgabetabelle zusammenzufassen, erfolgt mit dem Vereinigungsbefehl.

Transkript

Wenn Sie Datenbanken sauber planen, nach den Regeln der relationalen Datenbank-Algebra und den Vorschriften die dort so aufgestellt wurden, dann ist Ihnen vieleicht auch schon mal der Begriff der "Normaliesierung" begegnet. Keine Bange, ich möchte zu diesem Thema nicht zu tief ausholen. Aber es sei so gesagt, dass, wenn Sie zum Beispiel immer wiederkehrende, gleiche Werte innerhalb einer Spalte vermuten und die auch auftreten in der Praxis, dann ist das nach den Normalisierungsregeln zum Beispiel ein Indiz aus dieser Tabelle, zwei Tabellen zu machen. Ein schönes Beispiel ist, Sie haben eine Tabelle mit Adressen und dort wird angegeben, welche Hobbys die jeweiligen Adressen gerne haben oder durchführen. Und dann stellen Sie sich vor, Sie haben hunderte von Adressen dort drin. Dann taucht garantiert in einer Spalte "Hobby" 50 oder 80 mal das Thema Fussball auf, dass Hobby Fussball. Und das ist ein sichtbares Indiz. Dann macht man eine zweite Tabelle. Nämlich zum Beispiel "Sport". Dann bekommt die Bezeichnung Fussball eine ID, die Bezeichnung Tennis und was auch immer an Sportarten da drin ist. Jetzt wird quasi über die Schlüsselwerte die zweite Tabelle "Sportarten" mit der Adress-Tabelle verlinkt. Sie haben jetzt zwar auch wieder doppelte Werte aber das sind Schlüsselwerte. Erstens brauchen die wesentlich weniger Speicherplatz und zweitens sind das einfach Normalisierungsregeln. Wenn Sie mal in das Internet bemühen, und Sie suchen nach Normalisierung von Datenbanken, dann werden Sie direkt fündig. Das kann ich Ihnen auch empfehlen, sich damit weitläufig mal zu beschäftigen. Auf jeden Fall, wir haben dann bei guter Datenbankplanung es sicherlich mit mehr wie einer einzigen Tabelle zu tun. Und dann steht halt die Herausforderung an, aus diesen unterschiedlichen Tabellen wieder die Information zusammen zu bringen um sie ja, für uns Menschen wirklich sinnvoll ausgeben zu können. Der erste Befehl, der das wirklich kann ist der "Union" oder auf Deutsch, die "Vereinigung", eine Vereinigungsmenge. Der "Union" oder die "Vereinigung" ist vorhanden, um zwei Tabellen oder mehrere Tabellen miteinander zu verbinden. Und dabei fügt der "Union" die Datensätze mit gleicher Spaltenanzahl, das ist wichtig, wieder zu einer Ausgabetabelle mit allen Attributbezeichnern zusammen. Hier ist natürlich auch wieder zusätzlich die Verwendung der Projektion möglich, Selektion selbstverständlich auch, also um Klauseln aufzubauen. Man muss natürlich ganz genau überlegen, welchen Aussagewert eine Schnittmenge von Tabellen liefern soll. Wenn man das völlig planlos macht, ist auch das Ergebnis häufig sehr sinnlos. Ich möchte einfach mal so ein Beispiel geben. Ich gebe jetzt mal ein, Select Sternchen, from Personal und der Befehl dazu, einen solchen "Union" durchzuführen, heißt auch tatsächlich so. Das Wörtchen "Union". Und jetzt gebe ich mir das zweite einfach aus, Select, Sternchen from Projekt. Und das wird zu einer Fehlermeldung führen weil, die Spaltenanzahl aus der Tabelle Projekt, ist nicht gleich der Spaltenanzahl aus der Tabelle Personal. Und wie man sieht, bekomme ich genau das auch als Fehlermeldung gesagt. Jeder Union muss die gleiche Anzahl an Spalten besitzen. Jetzt kommen Sie vieleicht auf die Idee, alles klar mach ich doch. Nehmen wir mal die Personal-ID und den Namen, oder lassen wir mal gerade nur eine Ausgabe zu. Ich nehme jetzt aus der einen Seite, aus der Tabelle Personal nur den Namen, verbinde den, also mach einen Union und hole mir nun aus der zweiten Tabelle "Bezeichnung"-"from Project". So und tatsächlich lässt sich dieser Befehl ausführen. Denn der Befehl macht schon aus seiner Sicht heraus alles richtig. Er verbindet zwei Tabellen mit einer gleichen Anzahl an Spalten miteinander. Und insofern haben wir jetzt hier eine Ausgabemenge. Nur, Sie sehen schon, wie sinnvoll diese ist. Das ist in vielen Fällen ja, dass liegt an Ihnen was man sich dabei denkt. Und wenn Sie jetzt sagen alles klar, ich möchte alle Mitarbeiter und alle Messebezeichner haben, aus welchen Gründen auch immer, ist dieser Befehl sinnvoll. In vielen anderen Fällen, dann macht es wiederum keinen Sinn. Was allerdings funktioniert, lassen wir uns gerade mal die Tabellen von jetzt der Tabelle "Personal" und von "Kunden" einfach mal ausgeben. Also "Personal", so da haben wir vier Spalten, und das gleiche nochmal, nicht vom Personal sondern von Kunden. So und Sie sehen, der Aufbau ist völlig identisch. Und ich habe eben noch vergessen etwas zu erwähnen. Das ist nicht nur die Anzahl der Spalten die gleich sein muss, sondern es müssen auch die Datenwerte gleich sein. Sie können also keine Spalte miteinander kombinieren. Wenn ich das in den obrigen Beispiel also hier zum Beispiel gemacht hätte, wenn ich hier "Name" genommen hätte und hier zum Beispiel die Personal-ID, dann würde auch eine Fehlermeldung generiert, weil die Wertebereiche, beziehungsweise die Datentypen nicht identisch sind. Er muss das zueinander in Verbindung bringen können. Hier haben wir jetzt den großen Vorteil, dass wir eine Anzahl gleicher Spalten haben und in den Spalten auch tatsächlich die gleichen Werte drin sind. Würde man zum Beispiel jetzt hier das Geburtsdatum bei der einen und zum Beispiel bei der anderen irgendwas anderes stehen haben, dann könnte man es durch die Projektion ausschließen, hätte aber dann zumindest Zugriff auf die anderen Werte. Ja und was macht das für einen Sinn ? Stellen Sie sich vor, ich brauche alle Datensätze meiner Kunden, und aber auch meiner Mitarbeiter, weil ich die anschreiben möchte. Dann muss ich natürlich aus diesen beiden Datensätzen was zusammenziehen. Jetzt wissen Sie schon, was hier passiert. Select, ich hole mir das, dass kann ich jetzt mit dem Sternchen machen, ansonsten müsste ich die Projektion verwenden. Wie schon gesagt, ich hole mir alle Datensätze aus der Tabelle "Personal", verbinde das mit dem Union, und hole mir alle Datensätze aus der Tabelle Kunden. Und siehe da, nun habe ich die Datensätze alle beisammen. Wenn Sie jetzt ganz aufmerksam hinschauen, dann sehen Sie, stimmt dass nicht ganz. Wir haben zwei Tabellen oben zu sehen, und jede dieser Tabellen besitzt drei Datensätze. In der Ausgabe haben wir aber nur fünf. Was ist passiert ? Der Union bildet also eine Vereinigung, die Vereinigungsmenge. schließt gleiche Werte aus, dass heißt so Intelligent ist dieser Befehl dann auch schon. Das er sagt moment mal, ich habe hier den Herrn Schmitz Eberhard. Der ist nämlich sowohl ein Kunde, als auch ein Mitarbeiter. Das macht keinen Sinn, den zwei mal auszugeben. Also bei einem Serienbrief zum Beispiel würde man das sicherlich nicht wollen. Das reicht ja, wenn ich den einmal anschreibe. Möchten Sie trotzdem alle Datensätze aus der ersten und zweiten Tabelle haben, gibt es da auch noch eine Hilfe. Und der ganze Trick dabei ist, hier zwischen dem Union und dem Select einfach noch das Wörtchen "All" zu setzen. Und es erklärt sich auch schon, verbinde alle selektierten Datensätze aus der Tabelle "Kunden". Und wenn ich das jetzt ausgebe , jetzt kommen noch sechs Datensätze zur Auswahl und genauso sollte das eigentlich sein. Und weiter führend sei auch gesagt, die Projektion ist möglich. Die habe ich jetzt hier nicht verwendet. Und selbstverständlich auch die Selektion im Sinne einer "Where"-Klausel, und damit haben Sie schon ziemlich umfangreiche Möglichkeiten aus unterschiedlichen Tabellen weitere Informationen zu generieren.

PostgreSQL Grundkurs

Lernen Sie, wie Sie PostgreSQL in Ihr System integrieren und Datenbanken, Tabellen und Datensätze anlegen und verwalten können.

2 Std. 53 min (28 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:26.01.2017
Aktualisiert am:15.05.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!