[MySQL] Joins

Fee

Okay
20 April 2006
936
73
Ich komm mal wieder nicht mit JOINs klar ;(.

Ich habe eine Tabelle details:
id|name|desc|...
0|S_NAME|S_DESC|...

Und eine Tabelle, in der die Sprachen stehen: lang:
id|sid|text
0|S_NAME|Ein Name
1|S_DESC|Eine Beschreibung

Jetzt brauche ich einen SQL-Befehl der mir dies liefert:
id|name|desc|...
0|Ein Name|Eine Beschreibung|...

Mir ist nur folgendes eingefallen:
Code:
SELECT * FROM `details` as a 
LEFT JOIN `lang` as b ON a.name=b.sid
LEFT JOIN `lang` as c ON a.desc=c.sid
Das ist aber schlecht, vor allem wenn ich das in PHP mit fetch_assoc nutze. Da beide JOINs dann ein String 'text' liefern, die sich überschreiben.

Hat hier jemand eine Idee, wie man das elegant lösen kann? Ich komm bei sowas nie weiter :D.
 
Code:
SELECT b.text AS name, c.text AS desc FROM details as d 
LEFT JOIN lang as l1 ON d.name = l1.sid
LEFT JOIN lang as l2 ON d.desc = l2.sid

Einfach eine der Grundregeln beachten und nicht einfach alles selektieren, sondern nur das, was man braucht (besonders, wenn man mit JOINS arbeitet ;))

Greetz

paddya
 
Code:
SELECT b.text AS name, c.text AS desc FROM details as d 
LEFT JOIN lang as l1 ON d.name = l1.sid
LEFT JOIN lang as l2 ON d.desc = l2.sid

Einfach eine der Grundregeln beachten und nicht einfach alles selektieren, sondern nur das, was man braucht (besonders, wenn man mit JOINS arbeitet ;))

Ah danke, wusste garnicht dass man da ein AS benutzen kann :). Von details muss ich jedoch alles selektieren, da dort noch jede Menge anderes drin steht.
Code:
SELECT [B]d.*,[/B] b.text AS name, c.text AS desc FROM details as d 
LEFT JOIN lang as l1 ON d.name = l1.sid
LEFT JOIN lang as l2 ON d.desc = l2.sid
Jetzt gibt es zwar 2x text und 2x desc, aber das macht hier nichts.
 
Zuletzt bearbeitet: