or WHERE Abfrage

turntab

Benutzer
Beiträge
5
Hallo liebe Community,

bei einer SQL-Abfrage komme ich nicht weiter.

Was soll passieren?

Über ein Multiselect Feld kann ein Benutzer unterschiedliche Marken auswählen, für alle ausgewählten Marken sollen dem Benutzer die Produkte angezeigt werden.

Technischer Background
Wenn der Benutzer nur eine Marke auswählt, setze ich per PHP dynamisch eine einfache WHERE marke = '[markenname]',

wählt der Benutzer mehere Marken aus, erhält die erste Marke eine WHERE marke = '[markenname]' und alle weiteren Marken dann eine orWhere marke = '[markenname]'.

Das ganze sieht dann gekürzt in etwa so aus:


SELECT DISTINCT * FROM "Artikel" WHERE (art1.Hauptgruppe IN (0, '2')) AND (kum.Marke = 'Hublot') OR (kum.Marke = ' Ferrari') OR (kum.Marke = ' Breitling') OR (kum.Marke = ' Lange & Söhne') OR (kum.Marke = ' Patek Philippe') ...



Das Problem
Angezeigt werden nur Artikel der ersten Marke, alle anderen Marken werden nicht angezeigt.

Weiß jemand warum und hat hierzu eine Lösung?
Vielen Dank für jeden hilfreichen Tipp!
 
Werbung:
Das ganze sieht dann gekürzt in etwa so aus:

SELECT DISTINCT * FROM "Artikel" WHERE (art1.Hauptgruppe IN (0, '2')) AND (kum.Marke = 'Hublot') OR (kum.Marke = ' Ferrari') OR (kum.Marke = ' Breitling') OR (kum.Marke = ' Lange & Söhne') OR (kum.Marke = ' Patek Philippe') ...

Das sieht für mich so erst einmal okay aus. Vermutlich denkst Du nur, daß das SQL so aussieht, in der Realität sieht es aber anders aus.
 
Problem gelöst.

1. Leerzeichen waren vor den Markennamen vorhanden
2. Falsche Klammerung

FALSCH:
WHERE s1 = [x] AND s2 = [a] OR s2 = OR s2 = [c]

RICHTIG
WHERE s1 = [x] AND (s2 = [a] OR s2 = OR s2 = [c])

Gracias, kann geschlossen werden.
 
Werbung:
Zurück
Oben