2017-01-10 11 views
0

このWHERE文を単純化して、AirportとStoreNameを一度だけ宣言してカテゴリとフィクスチャを変えなければならない方法はありますか?WHERE句の簡略化

SELECT * FROM Product_Display 
WHERE (Airport = 'JFK' AND StoreName = 'T3' AND Category = 'Pralines' AND FIXTURE like '%W15%') 
OR (Airport = 'JFK' AND StoreName = 'T3' AND Category = 'Kinder' AND FIXTURE like '%W12%') 
OR (Airport = 'JFK' AND StoreName = 'T3' AND Category = 'Nutella' AND FIXTURE like '%G04%') 
OR (Airport = 'JFK' AND StoreName = 'T3' AND Category = 'Tic Tac' AND FIXTURE like '%W12%') 
+1

はい、あなたAirportとStoreNameの条件を1回だけ持つことができます。 – jarlh

答えて

3

あなたは、これはあなたを助けるでしょう希望

SELECT * FROM Product_Display 
WHERE Airport = 'JFK' AND StoreName = 'T3' AND ((Category = 'Pralines' AND FIXTURE like '%W15%') 
OR (Category = 'Kinder' AND FIXTURE like '%W12%') 
OR (Category = 'Nutella' AND FIXTURE like '%G04%') 
OR (Category = 'Tic Tac' AND FIXTURE like '%W12%')) 

の下のように簡素化することができます。

2
SELECT * 
FROM Product_Display 
WHERE Airport = 'JFK' 
     AND StoreName = 'T3' 
     AND ((Category = 'Pralines' AND FIXTURE LIKE '%W15%') 
       OR (Category = 'Kinder' AND FIXTURE LIKE '%W12%') 
       OR (Category = 'Nutella' AND FIXTURE LIKE '%G04%') 
       OR (Category = 'Tic Tac' AND FIXTURE LIKE '%W12%') 
      ) 
2

次のクエリはおそらく、読みやすく、意味的に同じですが、:

SELECT * FROM Product_Display 
WHERE (Airport = 'JFK' AND StoreName = 'T3') AND 
    ( (Category = 'Pralines' AND FIXTURE like '%W15%') 
    OR (Category = 'Kinder' AND FIXTURE like '%W12%') 
    OR (Category = 'Nutella' AND FIXTURE like '%G04%') 
    OR (Category = 'Tic Tac' AND FIXTURE like '%W12%') 
) 
1

ただ、このように、括弧の外に空港とStoreNameをを取る:

SELECT * FROM Product_Display 
WHERE Airport = 'JFK' AND StoreName = 'T3' AND 
(
    (Category = 'Pralines' AND FIXTURE like '%W15%') 
    OR (Category = 'Kinder' AND FIXTURE like '%W12%') 
    OR (Category = 'Nutella' AND FIXTURE like '%G04%') 
    OR (Category = 'Tic Tac' AND FIXTURE like '%W12%') 
)