Php 能够正确计算的sql
拥有sqlite表:Php 能够正确计算的sql,php,sql,sqlite,Php,Sql,Sqlite,拥有sqlite表: orderitems -id -item_id -quantity 我需要清点每件物品的编号 这不是问题: $this->db->query("SELECT item_id,COUNT(item_id) FROM sh_orderitems GROUP by item_id ORDER by COUNT(item_id) DESC
orderitems
-id
-item_id
-quantity
我需要清点每件物品的编号
这不是问题:
$this->db->query("SELECT item_id,COUNT(item_id)
FROM sh_orderitems
GROUP by item_id
ORDER by COUNT(item_id) DESC LIMIT 5")->fetchAll();
结果是:
0 =>
array (size=4)
'item_id' => string '38' (length=2)
0 => string '38' (length=2)
'COUNT(item_id)' => string '3' (length=1)
1 => string '3' (length=1)
但这不是一个好的解决方案,因为:数量不算在内。
如果您按计数行和订单,则需要选择项目id、计数(项目id)*数量之类的内容
SELECT item_id,SUM(quantity) as `sum_items`
FROM sh_orderitems
GROUP by item_id
ORDER by `sum_items` DESC LIMIT 5
或
那么,
SUM(quantity)
?计算每个项目id的行数或每个项目id的SUM quantity?因此,您需要使用SUM(quantity)。最终的解决方案是按项目id从sh_orderitems组中选择项目id、SUM(quantity)
SELECT item_id,sum_items
FROM (SELECT item_id, SUM(quantity) AS sum_items
FROM sh_orderitems
GROUP by item_id)
ORDER by sum_items DESC LIMIT 5