SQL - 计算关系实例

时间:2015-04-25 17:58:54

标签: sql

我有这个SQL图:

enter image description here

我想让所有订阅者完全喜欢0个报告。

开始于:SELECT * FROM subscriber HAVING count(...)

如何计算订阅者喜欢的记者人数?

关系应该在SQL数据库中获得它自己的表吗?

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解你的上一个问题,但这听起来像NOT IN条款的好时机。

SELECT *
FROM Subscriber
WHERE Id NOT IN (SELECT SubscriberId
                 FROM Likes
                     INNER JOIN Reporter ON Reporter.Id = Likes.ReporterId)

那里的内部查询只是查找已报告的所有订户ID,然后外部查询抓取所有其他订户ID。您可以通过将INNER JOIN更改为另一个IN来提高此查询的效率,但您必须使用它。

就计算它们的任务而言,我可能只是这样做。你可以分组等,但这很简单,

SELECT *, (SELECT COUNT(*)
           FROM Likes
               INNER JOIN Reporter ON Reporter.Id = Likes.ReporterId
           WHERE Likes.SubscriberId = Subscriber.Id) AS ReportersCount
FROM Subscriber

请注意,对于您列出的查找零记者的任务,第一个查询会更快,因为它可以短路,而不必计算每一行的每个记者。当然,只要你有合适的索引,两者都不应该太糟糕。

相关问题