|
Öffnet eine Verbindung zu einem MySQL-
Liefert einen Datensatz als assoziatives Array
Sendet eine Anfrage an MySQL
Auswahl einer MySQL Datenbank |
Tutorials - mySQL - SELECT - mehrere TabellenTutorials - mySQLSELECT: mehrere Tabellen Deprecated: Function mysql_list_tables() is deprecated in /home/burghi/dummies/classes/class_code.php on line 320 Wenn man eine Datenbank aufbaut, versucht man so wenig Redundanz wie möglich zu erzeugen. Redundanz bedeutet "Wiederholungen"... Wenn wir also z.B. für jeden unserer Kunden einen Berater haben, könnte man ihn in der Tabelle hinter dem Kunden eintragen. Die Folge wäre: Sollte ein Berater für mehrere Kunden zuständig sein, würde er mehrmals in der Kunden-Tabelle stehen. Und wenn der Berater z.B. heiratet und nen anderen Namen annimmt, muss man viele Einträge ändern. Daher nimmt man für die Berater eine extra Tabelle und gibt den Beratern, genauso wie die Kunden, eine id. So wie hier in den Tabellen kunden2 und berater2. Außerdem bekommt die Tabelle kunden2 eine Spalte, in der eine Berater-Id eingetragen werden kann - also praktisch die Verknüpfung zwischen Kunde und Berater. Warum in die Kunden-Tabelle? Ganz einfach: weil jeder Kunde nur EINEN Berater haben kann, ein Berater aber VIELE Kunden. Würde man die Verknüpfung also in Berater einfügen, würde man unbekannt viele Spalten brauchen, in denen man die Kunden-Ids eintragen würde... schlecht... Die Abfrage, die uns zu jedem Kunden auch noch den Berater liefert schaut folgendemaßen aus: SELECT ???? FROM `kunden2`, `berater2` WHERE kunden2.berater_id = berater2.id Die Fragezeichen sind deswegen gesetzt: -- Sowohl kunden2, als auch berater2 haben die Feldnamen "name" und "vorname" -- Wenn man anstelle der Fragezeichen ein * setzen würde, würde von beiden Tabellen alle Spalten genommen werden -- So würden sich diese Felder überlappen, oder besser: berater2.name würde kunden2.name im Endergebnis überschreiben -- Daher nimmt man a) nur kunden2.* -- b) nennt man für die Abfrage die Spalten berater2.name und berater2.vorname um -- zum umbenennen gibts das Wörtchen AS -- berater2.name AS bName -- jetzt heißt das Feld bName und kommt nicht mehr in Konflikt mit kunden2.name :-) -- berater2.vorname AS bVorname analog
<?php include("connect_mySQL.php"); include("functions/print_table.php"); $abfrage = mysql_query("SELECT kunden2.*, berater2.name AS bName, berater2.vorname AS bVorname FROM `kunden2`, `berater2` WHERE kunden2.berater_id = berater2.id"); print_table($abfrage); ?> |