我试图从一系列野生动物调查中检索数据。出于这个问题的目的,我有两个主要的表格,我正在使用。一个描述"事件"其中包括调查事件发生的日期和时间。另一个描述"观察"其中显示了所观察到的每个物种以及观察发生的调查事件。
我想要的是在每个调查事件中通过一系列日期检索给定物种的数量。我能够在看到该物种的日子里完成此任务,但我也希望在没有观察到该物种的情况下包含0个事件的条目。
答案 0 :(得分:0)
您可以选择与日期范围匹配的事件,并使用相关子查询来计算观察值:
select
event_id,
(
select count(*)
from observation o
where o.event_id = e.event_id
and o.species_id = :species_id
) as observation_count
from event e
where event_date between :start_date and :end_date;
真正的查询将根据您的DBMS,您的表格和列名称,您的数据(例如,每只动物是一个观察记录还是观察记录包含所看到的动物数量?)等而有所不同。您可能会有如果您提供了更多信息,我会得到更好的答案: - )