Frag einfach die Eigenschaften ab mit Left Join auf das Auto - oder eben Right Join, wie ich bereits geschrieben habe.
Autos mit Eigenschaften
Einklappen
X
-
-
Ich kann leider die Struktur der Datenbank nicht verändert, deswegen hab ich es jetzt erstmal so gemacht:
PHP-Code:SELECT autoname FROM autotabelle
WHERE (SELECT count(eigenschafttabelle.auto_id) FROM eigenschafttabelle
WHERE autotabelle.auto_id = eigenschafttabelle.auto_id
AND (eigenschaft = 3 OR eigenschaft = 4) GROUP BY auto_id) = 2
nein?
Kommentar
-
Ich hab auch nicht behauptet, dass du was umändern sollst...
PHP-Code:SELECT autoname
FROM eigenschaftstabelle
LEFT JOIN autotabelle
USING ( auto_id )
WHERE eigenschaft = 3
OR eigenschaft = 4
GROUP BY auto_id
Kommentar
-
Original geschrieben von ministry
Edit: Sorry, dein Problem lag beim AND, glaube ich, oder? Mh, ich würde dann die Tabelle tatsächlich zweimal joinen. [/B]nein?
Kommentar
-
Ja, du hast Recht - ich hab das Problem zu spät kapiert. Sorry für den Unsinn. Dann scheint deine Lösung doch recht passabel zu sein.
Kommentar
-
dependend subqueries sind für gewöhnlich der Tod für jeden DB-Server (zumindest in mysql)
probier mal sowas
SELECT autoname, COUNT(b.auto_id) anz FROM autotabelle a LEFT JOIN eigenschafttabelle b ON a.auto_id = b.auto_id AND b.eigenschaft IN (3, 4) WHERE anz = 2 GROUP BY a.auto_id
Wenn das nicht geht
SELECT autoname, COUNT(b.auto_id) anz FROM autotabelle a LEFT JOIN eigenschafttabelle b ON a.auto_id = b.auto_id AND b.eigenschaft IN (3, 4) GROUP BY a.auto_id HAVING anz = 2
Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!
bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
Wie man Fragen richtig stellt
Kommentar
-
Original geschrieben von ghostgambler
dependend subqueries sind für gewöhnlich der Tod für jeden DB-Server (zumindest in mysql)
b.eigenschaft IN (3, 4)
Vielen Dank für eure Hilfe.nein?
Kommentar
Kommentar