所以我的MySQL,用户和购买都有两个表。
用户表包含Id,Name,Surname等。购买表包含Id,User_id,Status和Sumes for something。
我需要的是从这两个表中选择,我将得到每个用户购买的每个项目的总和。
我已经用表'用户'
尝试了这个LEFT JOIN 'purchases'
ON 'users'.'id' = 'purchases'.'user_id'
SELECT SUM (sum) FROM 'users', 'purchases' WHERE 'purchases'.'status' = 'completed' AND 'purchases'.'user_id' = 'users'.'id'
但是有了这个,我得到了每个用户相同的金额,这是错误的。我该怎么写呢?
非常感谢任何可能的帮助!
为了提供一些实际的例子,我们来看看这个:
Users:
Id: 1 Name: John
Id: 2 Name: Ann
Purchases:
Id: 10 Status: completed User_id: 1 Sum: 4.00
Id: 20 Status: completed User_id: 1 Sum: 8.00
Id: 30 Status: completed User_id: 2 Sum: 50.00
Id: 40 Status: completed User_id: 2 Sum: 100.00
运行查询后,我应该得到这个:
Id: 1 Sum: 12.00
Id: 2 Sum: 150.00
查询是通过Laravel进行的,所以我只是
DB::table('users')->leftJoin... ->select(DB::raw...
答案 0 :(得分:1)
首先,你提交的SQL是乱七八糟的,事情完全超出传统的顺序,我不确定它会如所呈现的那样执行。也就是说,这应该做你想要的,假设我正确理解你想要的输出:
SELECT users.id, users.name, users.surname, ROUND(SUM(purchases.sum),2) AS totalSum
FROM purchases
LEFT JOIN users ON users.id = purchases.user_id
WHERE status='completed'
GROUP BY users.name, users.surname
ORDER BY users.id
您在查询中缺少的关键方面是GROUP BY
部分,我为了自己的利益而添加了ORDER BY
,如果您愿意,可以使用它。
这是我在发布您的样本数据之前为您准备的小提琴,主要答案已经由我看到的其他人给出,因此我只是发布了这个,因为我已经完成了它的工作。 http://sqlfiddle.com/#!9/8fa2d/6/0
小提琴正在表演,所以这是未经测试但试一试。
SELECT users.id, users.name, users.surname, ROUND(SUM(CASE WHEN purchases.status = 'completed' THEN purchases.sum ELSE 0 END),2) AS totalSum
FROM users
LEFT JOIN purchases ON users.id = purchases.user_id
GROUP BY users.id
ORDER BY users.id
答案 1 :(得分:0)
您需要按照您希望aggretates所基于的字段进行分组。 我不知道你的桌子结构,但是应该这样做。
SELECT
U.UserId, U.UserName, Sum(P.AmountPaid)
FROM Users U
LEFT OUTER JOIN Purchases P ON P.UserId = U.UserId AND P.Status = 'completed'
GROUP BY
U.UserId, U.UserName
答案 2 :(得分:0)
尝试此查询:
SELECT
U.UserId, Sum(P.AmountPaid)
FROM Users U
LEFT OUTER JOIN Purchases P ON P.UserId = U.UserId
GROUP BY
U.UserId
答案 3 :(得分:-1)
jq(".cell img").each(function() {
if (jq(this).length > 0) {
console.log("Oh There You Are");
} else {
console.log("Empty elements erased");
jq( ".cell" ).remove();
}
});
您已设置数据库知道的SELECT columns, SUM(column to sum)
FROM (tables you want)
WHERE FILTER
GROUP BY column (for example customer ID)
,哪些内容必须汇总。