我有一个费用表,我试图从中提取多个计算值。我从最简单的“今天”开始。我的目标是从表中查询我需要的数据及其各自的相关表,然后还查询具有不同日期范围的同一父表。我有一个查询,但 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
编辑 添加我的结果/布局以便于理解
最佳答案
这就是问题所在,因为这有效地将 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/