クエリから正しい結果を得ることに問題があります。SQL複数のANDとORを同じクエリで使用する
私の主な問題は、私はこの形式でデータを含む列と呼ばれるfilterlistを持っているということである私は、このところのステートメント使用して私の最初のクエリに一致するすべての製品を選択する必要が[space]NUMBER[space]
| 2 | 16 | 7 |
-
WHERE
(dept = '5') AND (active = 1) AND (Manufacturer = 'A Company')
を
次に、列filterlist
に文字列値[space]NUMBER[space]
が含まれているレコードを検索するには、次を追加する必要があります。
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))
だから私は5としてDEPTを持つすべてのレコードを取得しているよさ210
(CHARINDEX(' 2 ', filterlist) > 0) OR (CHARINDEX(' 3 ', filterlist) > 0)
OR (CHARINDEX(' 64 ', filterlist) > 0)
は、アクティブであり、「A社」によって、列filterlistと判断(例として)3,34または64のいずれかを含む
UPDATE:すべてがこの部分で正常に動作します:
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))
に追加されたときに誰もがこれを行う方法の方向に私を指すことができれば、私は非常に感謝される間違った部門/メーカーから他のレコードに引っ張ります。
コードは大丈夫です。私はデータを検証するのが好きです。 http://sqlfiddle.com/の例では、テーブル構造体と1つまたは2つのレコードを設定できますか? – user212514
これまでにこれを使用したことはありませんでしたが、今度はsqlfiddleアカウントを設定することになります –
はsqlfiddleをセットアップしましたhttp://sqlfiddle.com/#!3/109814/1 –