【发布时间】:2021-02-28 05:26:47
【问题描述】:
我有以下表关系结构。 (我对 SQL 还很陌生,所以请放轻松)另外,我正在使用 Postgresql,如果它改变了任何东西,我会发现它。
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');这一行我应该如何查询这个父级的父级关系?
【问题讨论】:
-
您只需要加入父表。它应该类似于
FROM visits inner join sessions on visits.session = sessions.id和WHERE子句然后需要会话而不是会话。我假设表名是复数,主键称为 id,外键是父表的单数。 -
@JonathanWillcock 你的假设是正确的,我现在就试试你的建议
-
@JonathanWillcock 工作就像一个魅力!你想发布一个真实的答案,我会把它标记为接受的
标签: sql database postgresql