Mailinglisten-Archive |
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