phpbar.de logo

Mailinglisten-Archive

JOIN von 3 tabellen

JOIN von 3 tabellen

Johannes Schäfer johnschaefer at gmx.de
Die Jul 15 16:45:31 CEST 2003


hallo liste.

ich habe eine fahrzeug datenbank in welcher die ausstattungsmerkmale in 
in einer extra tabelle gespeichert sind. allerdings habe ich 2 tabellen 
mit verschieden ausstattungen (z.b. konfortausstattung, 
standardausstattung). das ganze ist über zwei tabellen zusammen geführt.

nochmals zur verdeutlichung:
fahrzeuge
f_id|hersteller|...
-------------------
5489|Mercedes  |...
5490|Ford      |...

konfortausstattung
ka_id|beschreibung
-----------------
2351 |Sportlenkrad
2352 |Sitzheizung
2352 |Dachfenster

f2ka
f2a_id|ka_id|f_id
----------------
245488|2351 |5489
standardausstattung
sa_id|beschreibung
-----------------
2351 |Lenkrad
2352 |Sitze
2352 |Dach

f2sa
f2a_id|sa_id|f_id
----------------
245488|2351 |5489
245489|2352 |5489
245490|2352 |5490


nun möchte ich für eine suche diese tabellen zusammenführen also ds ich 
zum beispiel nach einem fahrzeug suchen kann das ka_id 2351 und sa_id 
2351, 2352 besitzt.

meine momentan lösung ist folgende:
SELECT
   count(sa_id) as "standard",
   count(ka_id) as "konfort",
   fahrzeuge.f_id as "fahrzeug"
FROM
   fahrzeuge
   LEFT JOIN standard USING (f_id)
   LEFT JOIN konfort USING (f_id)
WHERE
   standard.sa_id IN (2351, 2352)
   AND konfort.ka_id IN (2351)
GROUP BY
   fahrzeuge.f_id
HAVING
   standard=2 AND konfort=1

mein problem ist nun wenn z.b. ein fahrzeug 1 konfortmerkmal besitzt und 
2 standardmerkmale dann werden zwei datensätze geliefert (also wenn ich 
das count(), GROUP BY und HAVING weglasse) wo beispielsweise folgendes 
drinne steht:
standard|konfort|fahrzeug
-------------------------
2351    |2351   |5489
2352    |2351   |5489

also ich habe bei konfort die 2351 zweimal stehen und wenn ich das zähle 
kommt dort natürlich 2 heraus. ich würde aber gerne das dort NULL steht 
(wie als wenn man die WHERE-definition weglassen würde).

so, ich hoffe ich habe mich verständlich ausgedrückt.

schonmal vielen dank für eure hilfe.

mfg johannes

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive