[PHP/MySQL] Feld-Name nach "Join-Abfrage"

Toby

Cadet 4th Year
Registriert
Mai 2003
Beiträge
107
Hallo zusammen,

ich habe in einer PHP-Datei folgende SQL-Abfrage:

PHP:
$sql = "SELECT * FROM t_termine LEFT JOIN t_kunden ON t_termine.ID = t_kunden.ID WHERE BEDINGUNG ";

Damit ich die Daten in der PHP-Datei verwenden kann, schreibe ich das Ergebnis in ein Array.


PHP:
for ($i=0; $i < mysql_num_rows($result); $i++)
			{
			$ergebnis[$i]=mysql_fetch_array($result);
			}

Nun zu meinem Problem:
Es gibt in beiden Tabellen (t_termine und t_kunden) JEWEILS die Felder "plz" und "ort" mit unterschiedlichen Inhalten.

Wie spreche nun die Namen der Felder plz und ort in der PHP-Datei an ?

Wenn ich folgendes schreibe, weiss PHP nicht welches der beiden Felder gemeint ist und ich erhalte ich eine leer Ausgabe.
PHP:
echo "<tr><td>".$ergebnis[$i][plz]." ";

schreibe ich folgendes, erhalte ich einen 'Parse Error':
PHP:
echo "<tr><td>".$ergebnis[$i][t_termine].[plz]." ";

schreibe ich folgendes, erhalte ich wieder eine leere Ausgabe:
PHP:
echo "<tr><td>".$ergebnis[$i][t_termine][plz]." ";

Weiss jemand wie die richtige Syntax lautet ?

Viele Grüße
Toby
 
Weiss es jetzt nicht genau, aber vielleicht so:

$ergebnis[$i][t_termine.plz]." ";

Nur eine Vermutung
 
Alfredo schrieb:
Weiss es jetzt nicht genau, aber vielleicht so:

$ergebnis[$i][t_termine.plz]." ";

Nur eine Vermutung


Danke. Aber das klappt leider auch nicht. => keine Fehler, aber leere Anzeige
 
Hallo,

üblicherweise wird bei identischen Spaltennamen von MySQL ein Counter angehangen.
Also wäre das dann in deinen Fall normalerweise 'plz' & 'plz1'.

Du kannst aber versuchshalber einfach mal folgendes ausgeben:

PHP:
print_r($ergebnis);

In der folgenden Ausgabe, kannst du die Arrayschlüssel dann sehr einfach finden.


Ciao
 
Wie wäre es auf den "Stern" zu verzichten und die Spalten explizit zu wählen und dann halt gegebenenfalls einen Alias zu verwenden?
 
Hallo,

erstmal Danke für Eure Vorschläge.

@S.Giny
Ich habe mir die Sache mit print_r($ergebnis); mal angesehen.
Die doppelten Spaltennamen wurden einfach durch Zahlen von PHP ersetzt.
Also nicht 'plz1' sondern z.B. '17' ... :confused_alt:

Um dem Problem dann aus dem Weg zu gehen , habe ich die doppelten Spaltennamen umbenannt.

@ag3nt
Die Felder explizit auszuwählen wäre evtl. auch eine Möglichkeit gewesen, aber wie gesagt , die Spalten hatte ich zuvor schon umbenannt.

grüße
Toby
 
Du kannst das schon mit "*" machen, aber gib einer der Tabellen (oder beiden) wie schonmal gesagt doch einen Alias.

SELECT top 10 tabelle1.lnr
FROM
dbo.[VERSAND] as tabelle1
LEFT JOIN dbo.[VERSANDPOSITION] ON (tabelle1.LNR = dbo.[VERSANDPOSITION].LNR)


Ich hab den Query an eine meiner Tabellen angepasst. Für Deine müsste er ungefähr so aussehen:

$sql = "SELECT * FROM t_termine as Termine1 LEFT JOIN t_kunden ON Termine1.ID = t_kunden.ID WHERE BEDINGUNG ";

Dann müsstest Du eigentlich nix umbenennen...
 
Zurück
Oben