PHP/MySQL的计数订单

问题描述:

这里是数据库表:PHP/MySQL的计数订单

Users

Order_items

$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']; 
    } 
} 

我想算多少才能有充分的用户。例如:像托马斯有3个命令,但我的代码是写4,我想写Thomas(3),Gracian(1)。任何想法如何解决它?

+0

见http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve - 对于什么似乎对我来说是一个非常简单的SQL查询 – Strawberry

+0

请使用格式化文本,而不是图像。另外,使用该样本数据,预期的结果是什么? – jarlh

+0

结果是:4(即所有,我认为它的行数) –

使用此查询:

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,这就是我们想要的。

+0

草莓:downvote的原因? –

+0

因为你在计算错误的东西。 – Strawberry

+0

@TimBiegeleisen此选择有问题,导致结果是:3111 –

有使用子查询来执行SQL查询另一种方式:

SELECT id, email, address, name, (SELECT count(user_id) FROM order_items WHERE user_id = users.id) AS orderCount FROM users;

+0

以及如果我想从另一个表格(产品)添加一行,最新情况。想从产品表中找到ID,然后输入p.ID = oi.product_id(order_items) –

+0

@FaragoRoland您想要什么产品的属性?它也数过吗? – SaidbakR

+0

号我有另一个表(产品:ID,product_name,价格),我想要获得数量(从order_items)*价格(从产品表)。例如:5 * 20 = 100(如5订购商品*价格(20 /每件)) –