表是服务、计划、订阅。要求是获取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] 删除。
我来说两句