PHP_Dude: SQL-Abfrage

Beitrag lesen

Hi,

na ja, man könnte vielleicht über ein COUNT tricksen:
SELECT iid, COUNT(*) AS merkmalscheck
FROM sonder
WHERE sid IN (1, 2, 3, 15)
GROUP BY iid
HAVING merkmalscheck >= 4

Die 4 entspricht der Anzahl der erforderlichen Merkmale.
Zu lesen als: Gib mir all diejenigen Inserate, die bei Suche nach den Merkmalen 1, 2, 3, 15 unter der selben IID mindestens 4 Treffer aufweisen...

MfG
Rouven

Der Ansatz ist schonmal nicht schlecht, aber damit funktioniert der IN() nicht mehr, da plötzlich 2 werte zurückgegeben werden.

Das sieht dann so aus (gekürzt):

SELECT inserate.id,auto_marken.name AS marke,auto_modelle.modell,auto_typen.name AS typ,inserate.vb,inserate.km,inserate.preis,inserate.adresse
        FROM inserate
          LEFT JOIN auto_marken ON inserate.marke=auto_marken.id
          LEFT JOIN auto_modelle ON inserate.modell=auto_modelle.id
          LEFT JOIN auto_typen ON inserate.typ=auto_typen.id
        WHERE inserate.active=1
          AND inserate.id IN (
            SELECT iid, COUNT(*) AS merkmalscheck
            FROM sonder
            WHERE sid IN (1,2,3,15)
            GROUP BY iid
            HAVING merkmalscheck >= 4
          )
          AND inserate.marke = '2'
          AND inserate.modell = '20'