0

テーブル「products_items」のデータベースにリストされている一定量の製品があります。これらの一連は製品のカテゴリに関連しており、その名前は「製品」と呼ばれる別のテーブルにあります。JOINPRODUCTIDを使用してカテゴリを使用して、これらの数を決定しようとしています

これは私のクエリです:

SELECT *, count(*) as itemcount 
FROM products 
    LEFT JOIN products_items
    USING(PRODUCTID) 
GROUP BY PRODUCTID 
ORDER BY `order` ASC, `PRODUCTID` ASC";

ここでの問題は、アイテムが 0 と 1 の両方のカテゴリが値 1 を返していることです。ただし、クエリは <=2 アイテムを持つすべてのカテゴリで機能します。このカウントを修正して適切な量を出力する方法はありますか?

4

2 に答える 2

1

カウントしたいものを指定した場合:

SELECT *, count(products_items.PRODUCTID) as itemcount 
FROM products 
    LEFT JOIN products_items
    USING(PRODUCTID) 
GROUP BY PRODUCTID 
ORDER BY `order` ASC, `PRODUCTID` ASC";

mysqlにproducts_itemsのフィールドをカウントするように指示すると、その製品のproducts_itemsがない場合、カウントは0になります。一方、count(*) は、products_items に 0 行を組み合わせた製品に 1 行あったため、1 を返します。

于 2012-07-05T05:30:04.980 に答える
0

SELECT , count( ) as itemcount FROM products p LEFT JOIN products_items pi on (PRODUCTID) where p.PRODUCTID = pi.PRODUCTID GROUP BY PRODUCTID ORDER BY orderASC, PRODUCTIDASC";

于 2012-07-05T05:29:21.143 に答える