如何解决Postgresql 查询其中父级的父 ID 等于 id
我有以下表格关系结构。 (我对 sql 还是很陌生,所以请放轻松)另外,我正在使用 Postgresql,如果它改变了任何东西,它会是 idk。
Users -> Services -> Sessions -> Visits
基本上,用户有多个服务,服务有多个会话,会话有多次访问。
我正在尝试构建一个 COUNT 查询来计算某个时间段内某个服务的所有访问次数。我的问题是这需要查询访问会话的服务 ID。
到目前为止,我提出了以下查询:
SELECT COUNT(*)
FROM visits
WHERE (created_at BETWEEN Now()::timestamp - (interval '30days') AND Now()::timestamp)
AND (session.service = 'NDBKaG3a68tAOgHS');
并且在尝试运行时出现以下错误:
ERROR: missing FROM-clause entry for table "session"
LINE 4: AND (session.service = 'NDBKaG3a68tAOgHS')
我尝试查询会话服务的行是 AND (session.service = 'NDBKaG3a68tAOgHS');
我应该如何查询此父级的父级关系?
解决方法
您只需要加入父表。应该是这样的:
SELECT COUNT(*)
FROM visits INNER JOIN sessions on visits.session = sessions.id
WHERE (visits.created_at BETWEEN now()::timestamp - (interval '30days') AND now()::timestamp)
AND (sessions.service = 'NDBKaG3a68tAOgHS');
我假设表名是复数,主键被称为id,外键是父表的单数。
请注意,这是标准的 SQL
语法,因此该解决方案不是 PostgreSQL 特有的,但也适用于其他数据库。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。