这是数据库表:
$sql[2] = "SELECT u.* , oi.* , COUNT(oi.user_id) AS count
FROM users u, order_items oi
WHERE u.id=oi.user_id ";
$result3= mysqli_query($conn,$sql[2]) or die(mysqli_error());
if (mysqli_num_rows($result3) > 0) {
while ($record = mysqli_fetch_array($result3)) {
echo $record['count'];
}
}
我想统计每个用户有多少订单。示例:像 Thomas 有 3 个顺序,但我的代码写的是 4,我想写 Thomas (3),Gracian(1)。知道如何解决它吗?
最佳答案
使用这个查询:
SELECT u.id,
COUNT(oi.user_id) AS orderCount
FROM users u
LEFT JOIN order_items oi
ON u.id = oi.user_id
GROUP BY u.id
我们从 order_items
表中计算 user_id
的原因是给定用户没有订单的边缘情况。在这种情况下,我们要确保他的计数显示为零。 COUNT
函数忽略了 NULL
,这正是我们想要的。
关于PHP/MYSQL 统计订单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163863/