Fehler beim Abrufen der korrekten Ergebnisse von meiner Abfrage.SQL Verwenden mehrerer AND & OR in derselben Abfrage
Mein Hauptproblem ist, dass ich eine Spalte namens Filterliste haben, die Daten in diesem Format enthält [space]NUMBER[space]
| 2 | 16 | 7 |
Ich brauche alle Produkte auszuwählen, die meine erste Abfrage mit dieser Wo-Anweisung entsprechen -
WHERE
(dept = '5') AND (active = 1) AND (Manufacturer = 'A Company')
Dann muss ich folgendes hinzufügen, um Datensätze zu finden, in denen die Spalte filterlist
einen der String-Werte [space]NUMBER[space]
enthält -
Die vollständige SQL Ich habe versucht, mit ist
SELECT *
FROM products
WHERE
((dept = '5') AND (active = 1) AND (Manufacturer = 'A Company'))
AND ((CHARINDEX(' 3 ', filterlist) > 0) OR
(CHARINDEX(' 34 ', filterlist) > 0) OR
(CHARINDEX(' 64 ', filterlist) > 0))
Also ich bin auf der Suche, um alle Aufzeichnungen zu erhalten, die Abteilung als 5 haben, ist aktiv, hergestellt von "A Gesellschaft und dass die Spalte Filterliste enthält entweder 3,34 oder 64 (als Beispiel)
UPDATE: alles funktioniert mit diesem Teil fein:
WHERE
((dept = '5') AND (active = 1) AND (Manufacturer = 'A Company'))
AND ((CHARINDEX(' 3 ', filterlist) > 0)
aber zieht in andere Datensätze aus der falschen Dept/Hersteller, wenn dieser Abschnitt hinzugefügt wird
OR
(CHARINDEX(' 34 ', filterlist) > 0) OR
(CHARINDEX(' 64 ', filterlist) > 0))
Ich wäre sehr dankbar, wenn mir jemand in Richtung zeigen könnte, wie dies getan werden kann.
Der Code sieht okay für mich aus. Ich bin neugierig, die Daten zu überprüfen. Können Sie ein http://sqlfiddle.com/ Beispiel einrichten die Tabellenstruktur und einen Datensatz oder zwei? – user212514
noch nie zuvor verwendet, aber wird auf die Einrichtung von sqlfiddle Konto jetzt –
haben sqlfiddle http://sqlfiddle.com/#!3/109814/1 –