连接 3 个表时获取所有第一个表记录的问题

迪萨

表是服务、计划、订阅。要求是获取Service表中的所有记录,但应根据最多订阅数对记录进行排序。我能够根据加入条件获取记录,但无法获取没有订阅的服务表中的记录。

请注意。每个服务记录都有一个计划。但是可以有没有订阅的服务。

**Service**
service_id
service_name
status
is_active

**Plan**
plan_id
service_id
plan_name
plan_cost

**Subscribe**
subscribe_id
plan_id
person_name

SELECT DISTINCT s.service_id FROM service s JOIN plan p on s.service_id=p.service_id join
subscribe su on p.plan_id=su.plan_id WHERE
(s.status='Published' AND s.is_active=1) GROUP BY su.plan_id 
ORDER BY COUNT(su.subscribe_id) DESC

有人可以看看这个问题并提供帮助。

蒂姆·比格莱森

这应该是表之间的三向连接,按订阅聚合,而不是按计划聚合像这样的东西:

SELECT s.*
FROM service s
LEFT JOIN plan p
    ON s.service_id = p.service_id
LEFT JOIN subscribe su
    ON p.plan_id = su.plan_id
GROUP BY
    s.service_id
ORDER BY
    COUNT(su.subscribe_id) DESC;

如果您还想选择订阅计数,则可以将COUNT(su.subscribe_id)期限添加到 select 子句中。请注意service_id,在从service表中选择所有列时单独聚合应该是有效的,假设它service_id是该表中的主键。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

具有c3p0的spring JPA在第一个请求时具有连接超时

当第一个表中的 3 列可以指向第二个表中的同一列时连接表

如何在第一个表的列中指定的日期之前实现连接以获取第二个表中所有记录的计数

连接两个表,列出第一个表的所有结果

连接表,但确保返回第一个表中的所有行

连接表连接3个表?

按一个特定字段连接 3 个表

MySQL连接3个没有关系的表,并从它们中获取最后一个数据

当其中一个模型具有 ICollection 列表时,实体框架会连接 3 个表

连接3个表-SQL

连接3个表MySQL

如何连接3个表?

3 个表连接一对多

连接多个表并根据第一个表ID获取状态

GraphX-如何从vertexId获取所有连接的顶点(而不仅是第一个相邻的顶点)?

使用所有3个表共有的列连接3个表

只有当第一个表中的记录数大于或等于第二个表中的记录数时,我如何才能使左连接工作?

Mysql 左连接 3 个表和一个被连接两次

无法连接三个表并仅返回一个表中的所有记录

连接两个表,检查第一个表中的一条记录是否与第二个表中的多条记录匹配

Mysql 3 个表 2 个连接

连接3个表的记录数不相等

第一个套接字连接来自远程 IP 为 0.0.0.0,所有后续连接都正常

连接4个SQL表,3个源和一个“容器”

Oracle SQL - 2 个查询,连接 3 个表并划分一个列表而不重叠

Kusto - 连接两个表并计算第一个表和第二个表中第一个表中每条记录的键

我可以将 3 个表之间的关系表示为一个连接表吗?

Matplotlib在绘图时将最后一个连接到第一个点

mysql左连接/右连接3个表