0

範囲検索クエリで立ち往生しています。以下の例を参照してください。

SELECT * FROM product where status='A' and subcat_id=5 AND product.price < 50 AND  product.price BETWEEN 50 AND 100 AND category = "male"

上記の例では、50 未満のレコードは返されませんが、それらはデータベースにあります。

以下の2番目の例のようにしようとすると:

SELECT * FROM product where status='A' and subcat_id=5 AND product.price < 50 OR  product.price BETWEEN 50 AND 100 AND category = "male"

男性カテゴリではなく、50 未満のすべてのレコードを返します。

最後に、50 未満または 50 から 100 の間の範囲にあるが、男性のカテゴリのみのレコードを取得したいと考えています。

アドバイスありがとうございます。

4

2 に答える 2

3

()条件をグループ化するには、さらにいくつか必要です。私の理解が正しければproduct.price < 50、他の試合を希望するかproduct.price BETWEEN 50 AND 100、男性のみを希望します. その場合、これら 2 つの条件を でグループ化し()ます。

SELECT * 
FROM 
  product
where 
  status='A' 
  and subcat_id=5
  AND (product.price < 50 OR  (product.price BETWEEN 50 AND 100 AND category = "male"))
于 2012-05-14T20:35:42.003 に答える
3

ANDより優先度が高いOR。クエリは次のように解釈されます。

SELECT col1, col2, ..., coln
FROM product
WHERE (status='A' AND subcat_id=5 AND product.price < 50) OR
      (product.price BETWEEN 50 AND 100 AND category = 'male')

用語を正しくグループ化するには、適切な場所に括弧を挿入する必要があります。残っている唯一の問題は、正確にそれらをどこに置くかです。

私はあなたがこれを意味すると思います:

SELECT col1, col2, ..., coln
FROM product
WHERE status='A'
AND subcat_id=5
AND (
    product.price < 50 OR 
    (product.price BETWEEN 50 AND 100 AND category = 'male')
)

これにより、すべてのカテゴリで 50 未満の製品が表示され、男性カテゴリでは 50 から 100 の製品が表示されます。

于 2012-05-14T20:37:29.623 に答える