0

価格とマスター カテゴリの列を含む製品テーブルがあります。

DB にクエリを実行して、特定のカテゴリ (またはすべてのカテゴリ) の価格の範囲を見つけたいと考えています。この価格範囲は、適切な数の価格範囲に分割されます。つまり、£0-£5 £5-£10 などです。

これを行う方法がわかりません。これをすべてphpで行う必要がありますか?

編集:少し考えてみたので、明確にするために、どのカテゴリがリストされていても、おそらく4つの価格帯を、それぞれにほぼ同じ数の製品で表示できるようにしたいと思います. 私はそれについて私の弱い心を得ることができません:(

4

3 に答える 3

2

カテゴリごとの最小価格と最大価格の場合:

SELECT category, min(price) as min_price, max(price) as max_price
from Products
Group BY category

クエリで直接範囲の場合、次のようなことができます

SELECT
    category,
    SUM(CASE WHEN price BETWEEN 0 AND 5 THEN 1 ELSE 0 END) as zero-five,
    SUM(CASE WHEN price BETWEEN 5 AND 10 THEN 1 ELSE 0 END) as five-ten,
    ...
from Products
Group BY category

収量

Category  zero-five  five-ten
Cat1        2          4
Cat2        3          6

また

SELECT category, range, count(*)
FROM (
    SELECT 
        category,
        CASE WHEN price BETWEEN 0 to 5 THEN '0-5'
             WHEN price BETWEEN 5 to 10 THEN '5-10'
             ...
             ELSE '10+'
        END as range
    FROM products
)
group by category, range

収量

Category  range count
Cat1       0-5    2      
Cat1       5-10   4      
Cat1       10+    0
Cat2       0-5    3      
Cat2       5-10   6      
Cat2       10+    0
于 2012-09-09T03:24:33.923 に答える
1
$sql = "
SELECT P1.category as category, min(P1.price) as min_price, max(P2.price) as max_price
FROM Products P1 join Products P2 on P1.category=P2.category
Group BY category
";
<table width="300" border="1">
<tr>
<td><b>category</b></td>
<td><b>min_price</b></td>
<td><b>max_price</b></td>
</tr>
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
//print data
?>
<tr>
<td><? echo $row['category']; ?></td>
<td><? echo $row['min_price']; ?></td>
<td><? echo $row['max_price']; ?></td>
</tr>
<?
}
?>
于 2012-09-09T03:19:11.373 に答える
0

テーブルの構造についてはわかりませんが、これにより、製品テーブルで一意の価格が取得されます。

select distinct price from products order by price desc;

ここから、おそらくPHPを使い始めるでしょう。これらの価格をグループにどの程度正確に分類しますか?

于 2012-09-09T03:15:37.020 に答える