mysql - Left Join 以附加具有日期范围的相同表格

标签 mysql

我有一个费用表,我试图从中提取多个计算值。我从最简单的“今天”开始。我的目标是从表中查询我需要的数据及其各自的相关表,然后还查询具有不同日期范围的同一父表。我有一个查询,但 todaytotal 的结果不正确...我是不是计算日期有误或遗漏了一些重要的东西?谢谢!

整个事情

SELECT e.id AS exid, SUM(e.amount) AS grandtotal, e.note, e.edate, e.x1id, e.x5id, e.type, e.CreateDate, e.CreateID, e.CreateIP, 
r.name AS typename, u.fname, u.lname, ev.name as eventname, SUM(etoday.amount) AS todaytotal
FROM 08_00_main e /* expense table */

LEFT JOIN 08_00_main etoday /* should only contain values with todays date */
ON DATE(etoday.edate) = DATE(NOW())

LEFT JOIN 98_00_main r /* reference table with the names of the expense types */
ON r.parid = 16
AND r.tier = 3
AND r.intid = e.type

LEFT JOIN 01_00_main u /* user table */
ON u.id = e.x1id

LEFT JOIN 05_00_main ev /* events table - expenses can be linked to an event */
ON ev.id = e.x5id

WHERE e.active = 1

GROUP BY e.type
ORDER BY e.type

编辑 添加我的结果/布局以便于理解

这是查询前的基本数据表。 enter image description here

下面是上面的查询返回的内容 enter image description here

最佳答案

这就是问题所在,因为这有效地将 e 的每一行与 etoday 的第 4 行连接起来:

LEFT JOIN 08_00_main etoday /* should only contain values with todays date */
ON DATE(etoday.edate) = DATE(NOW())

我想你想改为这样做:

LEFT JOIN 08_00_main etoday /* should only contain values with todays date */
ON DATE(etoday.edate) = DATE(NOW()) AND etoday.id = e.id

关于mysql - Left Join 以附加具有日期范围的相同表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34477432/

相关文章:

MySQL select char(0x542d01 using ?) 微笑问题

mysql - 查询并集删除重复项

php - mySQL 仅对列中的每个站点回显行一次

php - MySQL 更新枚举字段类型值

MySQL 8 + 正则表达式字边界

mysql - 用户 'xxx' 的访问被拒绝 @'localhost'

php - 字符串到数组的转换、array_rand、取消设置以及返回数组到字符串。有捷径吗?

php - 如何基于树遍历算法从这个结果集中生成 TreeView ?

php - 如何合并两个MySQL结果?

php - 安装期间找不到 MediaWiki 的数据库驱动程序