Basics und deren Ausführung

Eiszwerg

Erfahrenes Mitglied
Hallo zusammen,

ich habe lange Zeit Anwendungen gemacht, die mit nur einer Tabelle ausgekommen sind.
Nun muss ich aber, um die Normalisierung einzuhalten, mehrere Tabellen miteinander verknüpfen.
Zum Üben und verstehen, folgende Situation (2 Tabellen):

t_test
id_test | name | vorname | id_ort

t_ort
id_ort | name_ort

Nun möchte ich alle Datensätze so ausgeben, dass nicht die id_ort angezeigt wird, sondern name_ort, also der Name vom Ort und nicht dessen Bezeichner.

Wer kann mir dies verständlich erklären?

Nächste Frage:
Wie geht das Ganze andersherum (speichern)?
 
Meinst du das in etwas so?
PHP:
<?php
    $result = mysql_query("SELECT * FROM t_ort") OR die(mysql_error());
    $row = mysql_fetch_assoc($result);
    $result = mysql_query("SELECT * FROM t_test WHERE id_ort = '".$row['id_ort']."'") OR die(mysql_error());
    $row2 = mysql_fetch_assoc($result);
    echo $row['name_ort']."<br>"; //Ausgeben des Ort-Names (Tabelle t_ort
    echo $row2['name']; //Ausgeben des mit Hilfe der Ort-ID "berechneten" Namens (Tabelle t_test)
?>
Wenn ich deine Frage jetzt falsch verstanden habe tuts mir Leit :eek:

Das kannst du natürlich auch andersrum machen, indem du einfach die Tabelle t_test ausliest und dann mit Hilfe der id_ort den betroffenen Eintrag der Tabelle t_ort auswählst.
 
@split

sicherlich mag dein Example funktionieren, allerdings ist MySQL mächtig genug, um mit einem Query an alle notwendigen Informationen zu kommen.

Ich empfehle an dieser Stelle einen JOIN (egal ob nun LEFT oder OUTER):
PHP:
//man kann Tabellen durch einen ALIAS anprechen -> AS something
//bei gleichem Vergleichsindex benutzt man beim LEFT-JOIN USING(something) ansonsten ON a.bla = b.blub
SELECT a.*, b.ort FROM t_test AS a LEFT JOIN t_ort AS b USING(ort_id)

Mehr erfährst du auf http://www.mysql.com ;)

Bloddy Newbie
 
Zurück