我一直在浏览这个网站,试图a)更好地理解我的问题,b)找到一些帮助来解决它,但似乎我所看到的一切都与我的问题略有不同,所以我在这里寻求帮助请给一些建议:)
我有以下查询
SELECT *,
(date_end < 1392569012) AS expired,
(date_start > 1392569012) AS pending,
(date_end > 1392569012 && date_start <= 1392569012) AS active
FROM tbl_events AS event
LEFT JOIN tbl_event_events AS ee ON event.event_id = ee.event_id
WHERE event.event_type = 5 && event.user_id = '".$user->getUserID()."'
ORDER BY expired,pending,active
它决定列表的状态。
现在我想做的是计算活跃、待处理和过期列表的数量
这是我更新的查询,但它只返回 1 行,但总和值正确?
SELECT *,
SUM(date_end < 1392569012) AS expiredCount,
SUM(date_start > 1392569012) AS pendingCount,
SUM(date_end > 1392569012 && date_start <= 1392569012) AS activeCount,
(date_end < 1392569012) AS expired,
(date_start > 1392569012) AS pending,
(date_end > 1392569012 && date_start <= 1392569012) AS active
FROM tbl_events AS event
LEFT JOIN tbl_job_events AS jobvent ON event.event_id = jobvent.event_id
LEFT JOIN tbl_job_department AS jdept ON event.event_id = jdept.event_id
LEFT JOIN tbl_departments as dept ON jdept.department_id = dept.department_id
WHERE event.event_type = 2 && event.user_id = '".$user->getUserID()."'
ORDER BY expired,pending,active
有人可以帮我让它工作吗!
感谢您的帮助
卢克
最佳答案
由于该过滤器的 active 值为 1,其他过滤器的 active 值为 0,因此将总和添加到事件过滤器以获取满足该过滤器的行数。
SELECT *, ( SELECT SUM(date_end > 1392569012 && date_start <= 1392569012)
FROM tbl_events AS event
LEFT JOIN tbl_event_events AS ee ON event.event_id = ee.event_id
WHERE event.event_type = 5 && event.user_id = '".$user->getUserID()."'
ORDER BY expired,pending,active),
(date_end < 1392569012) AS expired,
(date_start > 1392569012) AS pending,
(date_end > 1392569012 && date_start <= 1392569012) AS active
FROM tbl_events AS event
LEFT JOIN tbl_event_events AS ee ON event.event_id = ee.event_id
WHERE event.event_type = 5 && event.user_id = '".$user->getUserID()."'
ORDER BY expired,pending,active
关于php - sql 查询对一个查询中多个定义的列进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893824/