| 

.NET C# Java Javascript Exception

1
Hallo zusammen,

ich habe eine Frage zu MySQL Abfragen. Wie erhalte ich bei einem (impliziten) Join über mehrere Tabellen die entsprechenden Werte gleichnamiger Tabellenspalten?

$abfrage = mysql_query("SELECT
tabelle1.id,
tabelle1.name,
tabelle1.kurzname,
tabelle2.name,
tabelle2.fk_tbl1
tabelle2.ort
FROM tabelle1, tabelle2 WHERE
tabelle2.fk_tbl1=tabelle1.id
LIMIT 1");
$details = mysql_fetch_object($abfrage);


Den Kurznamen erhält man so:
echo $details->kurzname;
. Aber wie erhält man z.B. den Namen aus Tabelle 2 oder Tabelle 1?
echo $details->name;
reicht wohl nicht aus, da Tabelle 1 und Tabelle 2 beide eine Spalte "name" haben.

echo $details->tabelle2.name
funktioniert nicht.

Wer kann helfen?

vielen Dank!
01.02.2012
AlexanderF 185 1 6
3 Antworten
4
Nutze Aliase:
SELECT
tabelle1.id,
tabelle1.name AS nameAusTable1,
tabelle1.kurzname,
tabelle2.name AS nameAusTable2,
tabelle2.fk_tbl1
tabelle2.ort
FROM tabelle1, tabelle2
WHERE
tabelle2.fk_tbl1 = tabelle1.id
LIMIT 1


Danach ganz normal drauf zugreifen:
echo $details->nameAusTable1;


und

echo $details->nameAusTable2;
01.02.2012
LiRo 1,3k 1 9
LiRo 1,3k 1 9
2
Ich denke das sollte so gehen:

... Einem Ausdruck select_expr lässt sich mit AS alias_name ein Alias zuweisen. Der Alias wird als Spaltenname des Ausdrucks benutzt und kann in GROUP BY-, ORDER BY- oder HAVING-Klauseln verwendet werden. ...
(MySQL 5.1 Referenzhandbuch :: 13 SQL-Anweisungssyntax :: 13.2 Datenmanipulation: SELECT, INSERT, UPDATE, DELETE :: 13.2.7 SELECT)

Daher:
$abfrage = mysql_query("SELECT
tabelle1.id,
tabelle1.name,
tabelle1.kurzname,
tabelle2.name AS t2name,
tabelle2.fk_tbl1
tabelle2.ort
FROM tabelle1, tabelle2 WHERE
tabelle2.fk_tbl1=tabelle1.id
LIMIT 1");
$details = mysql_fetch_object($abfrage);

echo $details->t2name
01.02.2012
Da bin ich wohl zu langsam gewesen :-)
maximilian_becker 01.02.2012
0
vielen Dank :)
01.02.2012
AlexanderF 185 1 6

Stelle deine Php-Frage jetzt!