クエリがたくさんありますが、1つにまとめて最適化できますか?
SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
SELECT COUNT(prod_id) FROM products WHERE inventory > 10
クエリがたくさんありますが、1つにまとめて最適化できますか?
SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
SELECT COUNT(prod_id) FROM products WHERE inventory > 10
これはあなたのために働くはずだと思います。1つのSQLステートメントで3つのカウントを返します。
SELECT SUM(CASE WHEN inventory <= 5 AND cat_id = 1 THEN 1 ELSE 0 END) Q1Result,
SUM(CASE WHEN inventory BETWEEN 5 AND 10 AND cat_id = 1 THEN 1 ELSE 0 END) Q2Result,
SUM(CASE WHEN inventory > 10 THEN 1 ELSE 0 END) Q3Result
FROM products
そして、これがSQLFiddleです。
幸運を。
SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
UNION ALL
SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
UNION ALL
SELECT COUNT(prod_id) FROM products WHERE inventory > 10
クエリから複数の行をすべて1つの大きな長いリストに戻します。
これを試してみてください
SELECT (
SELECT COUNT(prod_id) FROM products WHERE inventory <= 5 AND cat_id = 1
) AS count1,
(
SELECT COUNT(prod_id) FROM products WHERE inventory BETWEEN 5 AND 10 AND cat_id = 1
) AS count2,
(
SELECT COUNT(prod_id) FROM products WHERE inventory > 10
) AS count3
あなたが使用することができます:
select sum( x ) from query 1 union query 2 etc