Mysql 带WHERE子句的左连接和
下面的查询总是为所有行输出SUM,而不是perMysql 带WHERE子句的左连接和,mysql,left-join,Mysql,Left Join,下面的查询总是为所有行输出SUM,而不是peruserid。不知道还能去哪里看。请帮忙 SELECT * FROM assignments LEFT JOIN ( SELECT SUM(timeworked) AS totaltimeworked FROM time_entries ) assignments ON (userid = assignments.userid AND ticketid = ?)
userid
。不知道还能去哪里看。请帮忙
SELECT * FROM assignments
LEFT JOIN (
SELECT SUM(timeworked) AS totaltimeworked
FROM time_entries
) assignments ON (userid = assignments.userid AND ticketid = ?)
WHERE ticketid = ?
ORDER BY assigned,scheduled
如果要保留SELECT*,则必须在子查询中添加GROUPBY子句。像这样的
SELECT * FROM assignments
LEFT JOIN (
SELECT SUM(timeworked) AS totaltimeworked
FROM time_entries
GROUP BY userid
) time_entriesSummed ON time_entriesSummed.userid = assignments.userid
WHERE ticketid = ?
ORDER BY assigned,scheduled
SELECT
assignments.id,
assignments.assigned,
assignments.scheduled,
SUM(time_entries.timeworked) AS totalTimeworked
FROM assignments
LEFT JOIN time_entries
ON time_entries.userid = assignments.userid
GROUP BY assignments.id, assignments.assigned, assignments.scheduled
但更好的方法是将SELECT*改为直接选择要添加GROUPBY子句的字段。像这样的
SELECT * FROM assignments
LEFT JOIN (
SELECT SUM(timeworked) AS totaltimeworked
FROM time_entries
GROUP BY userid
) time_entriesSummed ON time_entriesSummed.userid = assignments.userid
WHERE ticketid = ?
ORDER BY assigned,scheduled
SELECT
assignments.id,
assignments.assigned,
assignments.scheduled,
SUM(time_entries.timeworked) AS totalTimeworked
FROM assignments
LEFT JOIN time_entries
ON time_entries.userid = assignments.userid
GROUP BY assignments.id, assignments.assigned, assignments.scheduled
编辑1
查询2中包含的表名,如chameera在下面的评论中所述如果将表定义与所需的样本数据集包括在一起,您将努力实现更好的效果。sum也是一个聚合函数。您可能需要一个group by语句聚合函数,而不使用group by,结果将是一行,假设所有行都是一行group@MKhalidJunaid:我试图为
time\u条目中与assignments
中的userid
关联的每个userid
获取timeworked
的总和。读取聚合函数timeworked
在assignments
表中不存在,它只存在于time\u条目
@AlexG usetimeworked
列中,表名为SUM(time\u entries.timeworked)
@AlexG能否包含表结构和所需的输出样本?