[英]MySQL query using info from seperate tables
我有一个相当复杂的SQL查询,我正在寻找一些帮助。
我有两个表:历史表和详细信息表。
历史记录表包含以下列。
Event Date(ev_date)
Event Code(ev_code)
Machine ID(mc_id)
“详细信息”表包含以下列:
Machine ID(mc_id),
Location ID(lo_id)
Machine Name(mc_name)
我需要一个查询,它返回位置ID给定的给定计算机组的给定日期范围之间历史表中事件数的计数。
所以,在sudo代码中有点:
SELECT COUNT(*)
FROM history
WHERE ev_date (BETWEEN start_date AND end_date) AND ev_code = 1 AND ????
(mc_id必须具有来自详细信息表的某些lo_id)。
这有意义吗?
谢谢
SELECT COUNT(*)
FROM history h
WHERE h.ev_date BETWEEN @start_date AND @end_date
AND ev_code = 1
AND EXISTS(SELECT NULL
FROM details d
WHERE h.mc_id = d.mc_id
AND d.lo_id = @LocationID);
假设您在mc_id
history
和details
之间的一对一映射:
SELECT COUNT(*)
FROM history h
JOIN details d USING mc_id
WHERE h.ev_code = 1
AND h.ev_date between start_date and end_date
AND d.lo_id IN (?, ?, ?, ...)
或者ON h.mc_id = d.mc_id
而不是USING mc_id
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.