我有一个查询,使用子查询从2个独立的表中计数2列,该工作。现在我必须在这个查询中实现根据通话记录的日期过滤掉这些结果的能力。我将发布我正在使用的查询:从两个日期之间的单独表中计数2列
SELECT (m.FirstName || " " || m.LastName) AS Members,
(
SELECT count(CallToLineOfficers.MemberID)
FROM CallToLineOfficers
WHERE CallToLineOfficers.MemberID = m.MemberID
)
+ (
SELECT count(CallToMembers.MemberID)
FROM CallToMembers
WHERE CallToMembers.MemberID = m.MemberID
) AS Tally
FROM Members AS m, Call, CallToMembers, CallToLineOfficers
Join Call on CallToMembers.CallID = Call.CallID
and CallToLineOfficers.CallID = Call.CallI
WHERE m.FirstName <> 'None'
-- and Call.Date between '2017-03-21' and '2017-03-22'
GROUP BY m.MemberID
ORDER BY m.LastName ASC;
好吧,所以表呼叫存储日期和它的PK是CallID。 CallToLineOfficers和CallToMembers都是只包含CallID和MemberID的桥表。在当前查询中,日期被注释掉,该日期范围应该只返回所有名字,但计数1应该出现在1人名下。
我曾尝试加入Call.CallID与两个桥表Call's没有任何运气,但我认为这是正确的方式来做到这一点。有人能帮助我指出正确的方向吗?我搞不清楚了。 (我试图解释这一尽我所能,所以如果你需要更多的信息,让我知道。)
更新:这里是我得到的截图:基于
在样本中提供日期,新日期的结果应为:
Bob Clark - 1
Rob Catalano - 1
Matt Butler - 1
Danielle Davidson - 1
Jerry Chuska - 1
Tom Cramer - 1
Everyone else should be 0.
样本数据和期望的结果将是有益的。无论如何,它看起来好像你忘了加入'm'和'Call'表。 –
本来我有他们在那里,但似乎无法弄清楚他们是否正确。我会读它们,并提供我得到的和我应该得到的截图。 – RockGuitarist1