Inhalte aus mehreren Tables ziehen
Simon
- datenbank
Simon says:
Hallo Leute,
ich habe folgendes Problem:
Ich muss eine alte Datenbank mit PHP neu umschreiben.
In der Datenbank befinden sich 2 Tables mit denen ich arbeiten muss
die eine heisst Restaurants, die andere Orte.
In Restaurants befinden sich die Informationen über Restaurants in unserer Umgebung: Adresse, PLZ, Name Ort usw.
letztere Spalte (Ort) ist mein Problem -->
Da stehen nämlich nicht die Namen der Orte selbst drin sondern nur eine Zahl die wiederrum die ID der Table Orte anspricht.
Beispiel:
In der table Restaurants steht unter Ort -> 3
In der table Ort steht bei ID 3 -> Bensheim
Nun ist es so dass ich eine Datenbankabfrage gemacht habe die am Bildschirm ausgegeben wird.
Das sieht bisher so aus:
-----------------------------------------------------------------
Adresse Telefon
-----------------------------------------------------------------
Restaurant "Dei Mudder Deimudderstrasse 6 6666 / 666666
76287 3*
-----------------------------------------------------------------
*bei dieser 3 soll aber nun Bensheim stehen!
Wie kann ich nun die andere Datenbank ansprechen und sagen, dass die Zahl die in Restaurants steht der ID in der table Orte entspricht?
Mein bisheriges Script falls es notwendig ist:
<?php
$query_select = "SELECT * FROM Restaurants ".$where.$search_name.$and1.$search_ort.$and2.$and3.$search_kategorie." ORDER BY id ASC ";
$result_select = mysql_query($query_select);
$counter = 0;
while($row = mysql_fetch_array($result_select,MYSQL_NUM))
{
for($i=0; $i<count($row); $i++)
{
$berg[$counter][$i]= html_chars_replace($row[$i]);
}
$counter++;
}
$berg = array_values($berg);
for($i=0; $i<count($berg);$i++)
{
//HIER STEHT MEINE BILDSCHIRMAUSGABE DRIN
}
?>
Viele Dank schonmal im Vorraus! :)
Wie kann ich nun die andere Datenbank ansprechen und sagen, dass die Zahl die in Restaurants steht der ID in der table Orte entspricht?
Ich meinte natürlich nicht Datenbank sondern Table sorry :)
Hallo Simon,
schau mal in der Doku unter 'join'.
Gruß
Bernd
Hallo,
wie Bernd schon erwähnte:
JOIN-Klausel des SQL-Statements:
SELECT
Restaurants.Name,
Restaurants.Adresse,
Restaurants.PLZ,
Ort.Ort,
Restaurants.Telefon
FROM Restaurants
INNER JOIN Ort on Restaurants.ID = Ort.ID
WHERE <Suchbedingungen>
ORDER BY Ort.Ort ASC;
Wenn Du den Rest Deines Skripts nicht ändern willst: Zähle alle Spalten der Tabelle Restaurants der Reihe nach
einzeln auf:
Restaurants.Spalte1,
Restaurants.Spalte2, ...
aber ersetze die Spalte mit der ID durch
Ort.Ort (oder wie auch immer die Spalte mit dem Namen des Ortes heisst).
statt einfach SELECT * FROM Restaurants,
das bedeutet nämlich: Wähle alle Spalten aus der Tabelle Restaurants...
und vergiss nicht die ORDER BY-Klauses (d.h. die Sortierung) entsprechend zu ändern,
schliesslich soll die Reihenfolge wohl alphabetisch sein ...
Abgesehen davon ist es natürlich eine gute Idee, in einer Datenbank mehrere Tabellen zu haben, und nicht alles
in eine einzige Tabelle reinzuquetschen.
Simon says:
Hallo Leute,
ich habe folgendes Problem:Ich muss eine alte Datenbank mit PHP neu umschreiben.
In der Datenbank befinden sich 2 Tables mit denen ich arbeiten mussdie eine heisst Restaurants, die andere Orte.
In Restaurants befinden sich die Informationen über Restaurants in unserer Umgebung: Adresse, PLZ, Name Ort usw.
letztere Spalte (Ort) ist mein Problem -->
Da stehen nämlich nicht die Namen der Orte selbst drin sondern nur eine Zahl die wiederrum die ID der Table Orte anspricht.
...
Restaurant "Dei Mudder Deimudderstrasse 6 6666 / 666666
76287 3*
*bei dieser 3 soll aber nun Bensheim stehen!
Wie kann ich nun die andere Datenbank ansprechen und sagen, dass die Zahl die in Restaurants steht der ID in der table Orte entspricht?
...
Mein bisheriges Script falls es notwendig ist:
<?php
...
Diese Zeile musst Du dann mit dem angepassten SQL ersetzen.
$query_select = "SELECT * FROM Restaurants ".$where.$search_name.$and1.$search_ort.$and2.$and3.$search_kategorie." ORDER BY id ASC ";
Viele Dank schonmal im Vorraus! :)