phpbar.de logo

Mailinglisten-Archive

[php] SQL-Abfrage mehrere Tabellen

[php] SQL-Abfrage mehrere Tabellen

Dennis Dohle php at 72design.de
Die Okt 30 15:14:12 CET 2007


Hi Liste,

ich versuche gerade, ein System von mir etwas schneller zu machen. An einer
Stelle bin ich mir da nicht sicher, ob das nicht einfacher geht.

Ich habe z.B. zwei Tabellen. 

Tabelle 1: personen
Felder: id, vorname, name, std_telefon, std_fax

Tabelle 2: kommunikationen
Felder: id, typ, kommunikation

In der Tabelle 2 stehen also z.B. alle Telefonnummern etc., die dann mit der
id in den Standardfelder (z.B. std_telefon) der Tabelle 1 abgelegt sind. 

Jetzt möchte ich eine Abfrage über die Tabelle 1 machen, und gleichzeitig
die Kommunikationen erhalten, die ja als ids in den Feldern std_telefon und
std_fax enthalten sind. 

Grundsätzlich nichts Schwieriges, das mit dem LEFT JOIN-Attribut gelöst
werden kann. Nur habe ich ja jetzt zwei Standardkommunikations-IDs in der
Tabelle 1 und möchte beide "übersetzt" haben. Darum frage ich das derzeit
wie folgt ab:

SELECT 
	A.vorname, A.name, 
	B.kommunikation AS telefon, 
	C.kommunikation AS fax
FROM 
	personen AS A
LEFT JOIN 
	kommunikationen AS B ON B.id=A.std_telefon
LEFT JOIN 
	kommunikationen AS C ON C.id=A.std_fax


Funktioniert wunderbar! Aber kann man das nicht auch anders lösen, so dass
ich nur einmal die Tabelle "kommunikationen" ansprechen muss? Denn in meinem
System habe ich noch weitere Standardfelder wie "mobil", "email" und
"homepage". Dann müsste ich insgesamt fünf mal ein LEFT JOIN machen, dass
sieht mir sehr unsauber aus ...

greeting, Dennis



php::bar PHP Wiki   -   Listenarchive