Erklärung zur query

hoctar

Erfahrenes Mitglied
Hallo :)
Ich schau mir gerade einpaar os scipts an.
Kann mir bitte einer erklären wie das funktioniert, was dieser abschnitt macht:
PHP:
$qry = mysql_query("SELECT u.*, d.* FROM `user` u LEFT JOIN `dorf` d USING(id) where (u.id = '".$_SESSION[user_id]."')");

was bedeutet u.*, d.* ?
und was ist u LEFT JOIN ?
und was ist das d USING(id) where ?
 
Hallo,

was bedeutet u.*, d.* ?

u und d sind in der FROM-Klausel bzw. JOIN-Klausel des SQL-Statements als Tabellen-Alias definiert, d.h. als Kurzform.

u.* und d.* bedeutet nun nichts weiter wie: Liefere mir alle Tabellenspalten aus den beiden Tabellen (ohne sie angeben zu müssen).

und was ist u LEFT JOIN ?

Mittels LEFT JOIN verknüpfst du zwei Tabellen. Dabei werden dir alle Datensätze aus der 1.Tabelle ("user") zurückgeliefert, auch wenn es für das Verknüpfungskriterium keinen Datensatz in der 2. tabelle ("dorf") gibt.

und was ist das d USING(id) where ?

USING (id) ist die Kurzform von ON (u.id = d.id).
Man kann sie nur verwenden, wenn die zu verknüpfenden Felder in beiden Tabellen den gleichen Namen haben.

Insgesamt lässt sich die Query, die hier ausgeführt wird etwa wie folgt beschreiben:

Liefere alle Informationen aus allen Spalten der Tabellen user ("u") und dorf ("d"),
für denen es einen Eintrag in der Tabelle user gibt für die $_SESSION[user_id] PHP-Variable.
Dabei soll es egal sein, ob es ein "Dorf" zu dem User gibt.


Für alles weitere schau dir mal gutes SQL-Tutorial an. Als Beispiel folgende (gegoogelten):

http://www.sql-und-xml.de/sql-tutorial/
http://sql.1keydata.com/de/
http://www.w3schools.com/sql/default.asp

Markus
 
u und d sind in der FROM-Klausel bzw. JOIN-Klausel des SQL-Statements als Tabellen-Alias definiert, d.h. als Kurzform.

u.* und d.* bedeutet nun nichts weiter wie: Liefere mir alle Tabellenspalten aus den beiden Tabellen (ohne sie angeben zu müssen).

also d.h. das u und d keine splaten sind sondern eine kurz form, sagen wir mal für users und dorf ?
 

Neue Beiträge

Zurück