sql - 从表一中的每条记录中查找表二中日期最近的记录
问题描述
我的 Ms Access 2010 项目中有两个表:一个包含站点信息和模式的站点表,以及一个包含访问信息的访问表。
表站点:SitesID、名称、城市、Modality_A(是/否)、Modality_B(是/否)、Modality_C(是/否)
表访问:VisitsID、SitesID、Startdate、VisitorID、VisitTypeID、Modality (A/B/C)
我现在想从站点中的每条记录中获取
访问次数(次数)
最近的 Visits.Startdate
最近开始日期的对应访客 ID 和 VisitTypeID。
当没有访问某个站点时,该站点仍然必须在列表中。
最后但并非最不重要的一点是,我希望能够过滤 Modality。因此,当我选择模态 A 时,我只想要具有 Sites.modality_A=yes 的站点和具有模态 A 的访问信息。
到目前为止我所拥有的(对于模态 A):
SELECT DISTINCTROW Sites.SitesID, Sites.Name, Sites.City, Max(IIf([Visits].[Modality]="A", [Visits].[Startdate],Null)) AS MaxOfDate, Sum(IIf(Visits.Modality="A",1,0)) AS CountOfVisits, Max(IIf([Visits].[Modality]="A",[Visits].[VisitTypeID],Null)) AS MaxOfVisitTypeID, Max(IIf([Visits].[Modality]="A",[Visits].[VisitorID],Null)) AS MaxOfVisitorID
FROM Visits RIGHT JOIN Sites ON Visits.SitesID = Sites.SitesID
WHERE (((Sites.SitesID) In (select Sites.SitesID from Sites where (Sites.Modality_A=Yes))) GROUP BY Sites.SitesID, Sites.Name, Sites.City ORDER BY Max(IIf([Visits].[Modality]="A",[Visits].[Startdate],Null)) DESC;"
这工作得相当好,但有两个问题:
MAX(visitorID) 不起作用,它给出的不是最后一次访问的访问者,而是具有最高数字的访问者ID。
MAX VisitTypeID 不起作用,它给出的不是上次访问的 VisitTypeID,而是数字最高的 VisitTypeID
我找不到如何使这项工作。有任何想法吗?当然,到目前为止,我所拥有的完整的其他 SQL 也很好:)
非常感谢!!
解决方案
我会这样处理:
- A
join
并group by
获取最近的日期和计数。 - A
join
获取有关访问者的附加信息。 - 用于过滤模态的
where
子句。
这看起来像:
select sv.*, v.visitorid, v.visittypeid
from (select s.sitesId, s.name, s.modality,
count(v.visitId) as numvisits,
max(v.startdate) as maxdate
from sites as s left join
visits as v
on s.sitesid = v.sitesId
group by s.sitesId, s.name, s.modality
) as sv left join
visits as v
on v.sitesId = sv.sitesId and v.startdate = sv.maxdate
where sv.modality = "A";
推荐阅读
- angular - 禁用日期选择器中的文本字段。只需要使用日历图标。我怎样才能禁用文本字段
- ruby-on-rails - Heroku“演示”环境
- godot - (Godot 引擎)用 Tilemap 瓦片填充 2D 多边形
- apache-flink - Flink windowAll聚合比window进程?
- c++ - 如何在 eosio (c++) 中调用私有字段
- php - Laravel 中的约束关系
- ansible - 如何使用 Ansible 中的主机变量值更新角色的参数?
- android - Firebase 通知声音无法正常工作
- apache-spark - 在 Spark 中加入 Dataframe 性能
- python - 制作 Keras 模型时将数据拆分为训练、测试和评估