PHP 5.4 & MySQL 5.6 Grundkurs

Mit mehreren Tabellen arbeiten

Testen Sie unsere 1983 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Eine Tabelle alleine reicht Ihnen nicht? Sie wollen mehrere miteinander verbinden? Dann sind Sie hier richtig. Dieses Video zeigt, wie Sie Informationen auf mehrere Tabellen aufteilen und diese wiederum miteinander verknüpfen.

Transkript

Nehmen wir an, wir wollen bei einem Gartenhandel sowohl die Pflanzen über die Datenbank verwalten, aber ebenso auch die unterschiedlichen Lieferanten, die uns die Pflanzen liefern. Wie organisiert man das? Eine erste Möglichkeit sehen Sie hier. Ich habe hier eine große Tabelle. Da sind die Informationen über die Pflanzen gespeichert. Also der Name, die Beschreibung und der Preis. Und außerdem ist hier immer angegeben, welcher Lieferant uns die entsprechende Pflanze liefert. Hier Firma, Straße, PLZ, Ort. Das hier ist aber unpraktisch, weil jetzt die Informationen zu den Lieferanten redundant abgespeichert werden. Es kann dadurch passieren, dass mal die Adressen nicht konsistent sind. Nehmen wir an, Grünes Allerlei zieht um und hat eine neue Adresse. Weil ich die Adresse hier mehrmals in der Tabelle habe, kann es ja passieren, dass ich an einer Stelle vergesse, die Änderung durchzuführen. Außerdem wäre diese Änderung auch sehr mühsam durchzuführen. Ein weitere Nachteil ist natürlich, dass diese Art der Speicherung mehr Speicherplatz benötigt, und dass das Durchsuchen und Analysieren der Daten ebenfalls mühsamer ist. Besser ist es in diesem Fall, die Informationen auf zwei Tabellen aufzuteilen. Das heißt, wir haben eine Tabelle zu den Pflanzen, und erstellen eine weitere Tabelle zu den Lieferanten. Und es muss natürlich dann Möglichkeiten geben, diese beiden zu verknüpfen und einander zuzuordnen. Beginnen wird erst einmal mit der Tabelle der Lieferanten. Wir wollen dort speichern eine Liefer-ID, den Firmennamen, Straße, PLZ und Ort. Und dafür müssen wir eine Tabelle erstellen. Hier sehen Sie den Befehl mit dem ich jetzt die Tabelle "lieferanten" anlegen kann. Also, es ist ein CREATE TABLE, dann gebe ich die einzelnen Felder an, die ich brauche, und auch immer den Datentyp. Die Liefer-ID soll der Index sein und der Primärschlüssel. Das kann ich dann hier also kopieren. Und kann das hier beispielweise, kann ich ja die MySQL-Befehle sehr schön hier über phpMyAdmin, über das SQL-Tab eingeben. Und dann habe ich die Tabelle "lieferanten" ergänzt. Im nächsten Schritt wollen wir die auch mit Daten befüllen. Das machen wir über den SQL-Befehl INSERT INTO. Und jetzt habe ich hier drei Zeilen engefügt. Das heißt, damit ist meine Lieferanten-Tabelle erstellt. Und jetzt habe ich hier im Beispiel drei Lieferanten. Damit ich Lieferanten und Pflanzen miteinander verknüpfen kann, brauche ich bei meiner Pflanzen-Tabelle ein Feld, wo ich angebe, welcher Lieferant die Pflanze liefert. In der Pflanzen-Tabelle gibt es hier eine ID, einen Namen, eine Beschreibung und einen Preis. Die ID bezieht sich auf die Pflanze. Hier brauchen wir ein zusätzliches Feld, wo ich die Lieferanten-ID angeben kann. Dafür muss ich erst einmal die Tabelle anpassen. Das kann ich über folgenden SQL-Befehl machen: ALTER TABLE. Das heißt: Anpassen der Tabelle. Und jetzt soll hier mit ADD ein weiteres Feld hinzugefügt werden. Und dann gehe ich hier auf Ok. Und jetzt ist meine Tabelle angepasst. Dann muss ich die Felder noch befüllen, das kann ich hier immer machen mit UPDATE-Anweisungen. UPDATE heißt ja immer verändere einen Datensatz, den es schon gibt. Also ist UPDATE hier der richtige Befehl. Doch diesen Befehl hier kann ich ausführen lassen. Und dann sehe ich hier bei den Pflanzen ist immer eine Liefer-ID angegeben. Und ich habe hier meine Tabelle Lieferanten, wo es auch die Liefer-ID gibt. Dann möchte ich jetzt mal eine Abfrage machen, und dabei die beide Tabellen verknüpfen. Ich möchte jetzt hier mir Namen und Firma ausgeben lassen, also das heißt hier den Pflanzennamen und die Firma, das ist die Firma des Lieferanten, von diesen beiden Tabellen hier. Und ich muss auch angeben, wie diese beiden Tabellen zusammenhängen. Das mache ich in dieser WHERE-Klausel, wo ich jetzt schreibe pflanzen.liefer_id entspricht gleich lieferanten.liefer_id. Hier muss ich jetzt immer sagen, um welche Tabelle es sich handelt, weil es in beiden Tabellen ja ein Feld liefer_id gibt. Und das kann ich dann hier ausführen. Und dann sehen Sie jetzt sind die beiden Tabellen verknüpft. Und ich sehe immer zum Beispiel der Feldahorn wird von der Gärtnerei Müller geliefert etc. Es gibt eine alternative Syntax, das zu schreiben, diesen Befehl. Sie können auch den sogenannten INNER JOIN nehmen. Das schaut dann so aus, dass man wieder schreibt hier SELECT, also was möchte ich haben. Dann geben Sie die erste Tabelle an. Dann kommt das Schlüsselwort INNER JOIN und die zweite Tabelle, und dann kommt das Schlüsselwort ON. Das heißt, die großgeschriebenen Begriffe sind Schlüsselwörter, die Sie auch nicht ändern können. Und dann geben Sie wieder an, worüber die beiden Tabellen verknüpft sind. Also dieses Feld hier. Und wenn ich auf Ok gehe, habe ich hier wieder dasselbe Ergebnis, wie eben auch. Also INNER JOIN ist einfach eine Alternative zu dieser anderen Syntax. Wichtig ist aber, dass Sie bei solchen Abfragen immer angeben, wie die Tabellen verknüpft sind. Weil sonst passiert etwas, was Sie sicher nicht haben wollen als Ergebnis. Das zeige ich jetzt mal. Wenn ich einfach hinschreibe SELECT name, firma FROM pflanzen, lieferanten. Dann kriege ich das Kreuzprodukt. Das heißt, dann werden alle Datensätze der einen Tabelle mit allen Datensätzen der anderen Tabelle verknüpft. Das ist ein Ergebnis mit dem Sie nichts anfangen können. Deswegen ist es wichtig, immer anzugeben, wie die beiden Tabellen miteinander verknüpft sind. Eben haben Sie gesehen, dass wir den INNER JOIN verwendet haben, daneben gibt es auch den LEFT JOIN und den RIGHT JOIN. Um die zu benutzen, müssen wir einmal unsere Tabellen ein bisschen modifizieren. Zuerst einmal wollen wir einen zusätzlichen Lieferanten einfügen. Und außerdem wollen wir die Pflanzen-Tabelle so ändern, dass bei einer Pflanze kein Lieferant angegeben ist. Also, hier wird ein weiterer Lieferant eingefügt in die Lieferanten-Tabelle. Und hier wird die Tabelle Pflanzen bearbeitet, und es wird bei einer Pflanze, die Liefer-ID auf NULL gesetzt, das heißt, da ist jetzt kein Lieferant angegeben. Jetzt wollen wir uns noch einmal zu allen Pflanzen die Lieferanten angeben lassen. Das geht ja hier über die SELECT FROM und hier wieder über diese Verknüpfung. Dann sehen Sie aber folgendes. Es gibt ja jetzt eine Pflanze, bei der es keinen Lieferanten gibt und diese Pflanze wird hier nicht angezeigt. Wenn wir wirklich wollen, dass alle Pflanzen mit ihren Lieferanten angezeigt werden, also auch diejenigen, für die es keinen Lieferanten gibt, dann brauchen wir einen LEFT JOIN. Schauen wir uns das einmal an hier. So, das ist jetzt hier ein LEFT JOIN. Also wieder SELECT FROM, die erste Tabelle angeben, und dann LEFT JOIN, jetzt kommt die zweite, und bei ON steht wieder, wie diese beiden verknüpft sind. Und jetzt sehen Sie hier, bei dem Ergebnis ist auch der Baumwürger aufgeführt, eine Pflanze bei der es keinen Lieferanten gibt. Das LEFT JOIN sorgt also dafür, dass von der Tabelle, die links steht, in dem SELECT-Befehl, alles ausgegeben wird. Wenn wir hingegen den LEFT JOIN in einen RIGHT JOIN ändern, also hier RIGHT JOIN und uns das Ergebnis einmal ansehen, dann sehen Sie, kriegen wir alle Lieferanten, auch wenn Sie eventuell keine Pflanze liefern, also dieser neue Lieferant, den wir eben eingetragen haben, der liefert derzeit noch keine Pflanze. Praktisch bei der Arbeit mit mehreren Tabellen ist auch GROUP BY. Schauen wir uns das einmal an. Im Beispiel wollen wir ermitteln, wieviele Pflanzen die einzelnen Lieferanten liefern. Und dafür müssen wir die Inhalte gruppieren. Durch GROUP BY erreichen wir hier, dass gleiche Lieferanten-IDs zusammengefasst werden. Und jetzt sehen Sie hier Lieferanten-ID und wieviel liefert die jeweils. Soll jetzt der Firmenname an Stelle der Lieferanten-ID angezeigt werden, dann müssen wir die Tabellen wieder verknüpfen. Also, jetzt sind die beiden Tabellen wieder verknüpft. Wir haben jetzt hier beide Tabellen. Haben wieder unsere Bedingungen, wie die miteinander verknüpft sind, dieses liefer_ID Feld. Wir lassen die gruppieren nach der liefer_ID und wählen einen Firmennamen und mit COUNT zählen wir wieviele es sind. Und da COUNT keine schöne Spaltenüberschrift ist, verwenden wir hier ein Alias mit AS. Und das ist das Ergebnis. Jetzt sehen wir hier beispielsweise Gärtnerei Müller liefert uns 3 Pflanzen, Grünes Allerlei 2 etc. Solche Abfragen können wir natürlich weiter filtern. Wir können jetzt sagen, wir wollen von diesen Lieferanten jetzt nur diejenigen, die uns mehr als 2 Pflanzen liefern. Und dafür brauchen wir das Schlüsselwort HAVING. Also hier sieht genauso aus, wie unsere letzte Abfrage, aber hier noch ergänzt. HAVING Anzahl größer als 2, jetzt also bitte nur diejenigen, die uns mehr als 2 Pflanzen liefern, und jetzt sind es nur noch diese beiden hier. Also, Informationen müssen Sie auf mehrere Tabellen aufteilen. In unserem Beispiel waren es eine Tabelle für die Lieferanten und eine für die Pflanzen. Das ist wichtig, um Redundanzen zu vermeiden. Und wenn Sie Tabellen verknüpfen für Abfragen, können Sie das sowohl über JOIN machen, oder aber über SELECT und WHERE. Wichtig ist aber immer, dass Sie angeben, wie diese beiden verknüpft sind. Sonst erhalten Sie einfach eine Kreuztabelle, die nicht sinnvoll ist.

PHP 5.4 & MySQL 5.6 Grundkurs

Steigen Sie auch ohne Vorwissen in die Programmierung PHP- & MySQL-basierter Webseiten ein und lernen Sie die Sprachgrundlagen wie Bedingungen, Schleifen, Funktionen usw. kennen.

7 Std. 9 min (86 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

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!