Mailinglisten-Archive |
"a. otto" schrieb: > An und für sich ist das gar nicht so schwierig, dachte > ich, bis ich die Datenbank gesehen habe. In der wimmelt es > nur so von Relationen und davon habe ich bislang noch > nicht allzuviel Ahnung wie ich feststellen mußte. > Kein Problem bereitet es mir eine SQL Abfrage über Php > aus einer relationslosen Tabelle zu erstellen, aber für > das hier bin ich noch zu doof. Dann ist der Rest doch auch nicht schwer. Du kannst eine SQL-Anfrage über eine einzelne Tabelle erstellen, sagst Du. Dann mußt Du Dir nur noch die relationslose Tabelle zusammenstellen, in der Du die Frage stellen möchtest. Alle Tabellen in SQL haben einen Schlüssel, wenn sie richtig designed sind. Dieser Schlüssel ist immer eine eindeutige Spalte in der Tabelle oder eine Kombination von Spalten, die zusammengenommen eindeutig ist (zusammengesetzter Schlüssel). Zwei Tabellen können zu einer relationslosen Tabelle zusammengesetzt werden (ge-JOIN-ed werden), wenn eine Tabelle Schlüsseleinträge auf eine andere Tabelle enthält, d.h. wenn der Schlüssel einer Tabelle in einer anderen Tabelle vorkommt. Beispiel: create table autor ( name varchar, vorname varchar, autor_id integer, primary key (autor_id) ); create table buch ( titel varchar, isbn varchar, autor_id integer, primary key (isbn) ); Hier ist autor_id Schlüssel in der Tabelle autor. In der Tabelle buch ist autor_id Fremdschlüssel, d.h. die Tabelle buch enthält Verweise auf die Tabelle autor. In diesem Fall kannst Du beide Tabellen mittels eines JOIN zu einer Gesamttabelle vereinigen: select * from autor, buch where autor.autor_id = buch.autor_id; Hier werden alle Bücher aufgelistet, die ein Autor geschrieben hat, dabei werden die Autoren als Klartext und nicht als autor_id ausgegeben. Grundsätzlich kannst Du jede Relation auflösen auf diese Weise auflösen. Dazu mußt Du den Schlüssel in der einen Tabelle und den dazu passenden Fremdschlüssel in der anderen Tabelle identifizieren. Die beiden Tabellen werden dann im JOIN aufgezählt und das Schlüssel-Fremdschlüssel-Paar wird als Äquivalenzbedingung in die WHERE-Clause mit eingesetzt. Bei mehr als zwei Tabellen werden die einzelnen JOIN-Bedingungen ver-AND-ed. Deine abschließende Selektion wird dann an diesen Term mit AND drangehängt. Kristian -- Kristian Köhntopp, NetUSE Kommunikationstechnologie GmbH Siemenswall, D-24107 Kiel, Germany, +49 431 386 436 00 Using PHP3? See our web development library at http://phplib.shonline.de/ (GPL)
php::bar PHP Wiki - Listenarchive