我在表Subscribers
中有一个订阅者列表。每次收到订阅副本时,都会在Subscriptions_Fulfilments
为Subscribers.ID
创建一条新记录。
我可以使用以下查询创建一个表格,显示每个订阅者ID和他们收到的副本数量:
SELECT Sub_ID, COUNT(Sub_ID) fcount FROM `Subscriptions_Fulfilments`
GROUP BY Sub_ID
但是我需要创建一个返回Subscribers
的复合查询以及一个显示Subscriptions_Fulfilments
的COUNT(Sub_ID)的列。
所以我有两个问题:
A)您如何根据Subscriptions_Fulfilments
中订阅者ID的COUNT,创建一个显示每个订阅者的表及其收到订阅的次数的查询?
B)我的假设是单个MySql查询完成此操作会比运行两个查询(上面的一个查询和SELECT * FROM Subscriptions
更高效)并组合生成的数组用PHP。我有一种感觉,我知道答案,但我想积极地学习今天的新事物。
不幸的是,经过太多的尝试后,我显然对这方面的查询不够好,而且我几乎没有通过上述查询来展示它。如果这最终成为一个副本,我很抱歉,我在询问之前进行了长时间的努力搜索,但是很难精确搜索查询帮助......
答案 0 :(得分:0)
关系数据库的一大优势是能够以允许此功能的方式对表中的数据进行连接和组合,而无需将其实际存储在单独的表中。
您可以使用以下子查询来完成此操作:
SELECT Subscribers.name, fulfilments.count FROM Subscribers
INNER JOIN (
SELECT id, count(*) as count FROM Subscriptions_Fulfilments
GROUP BY Sub_Id
)fulfilments ON subscribers.id = fulfilments.id
这可能不是你正在寻找的100%而且我可能搞砸了你的名字,但希望这会让你开始在正确的地方?
答案 1 :(得分:0)
这是一个简单的示例,显示订阅者ID和他们收到的订阅号。希望它有所帮助。
步骤1:从订阅者表中选择ID 步骤2:选择每个订户收到的订阅数量 第3步:根据ID加入表格。
SELECT SubId, noSub FROM
Subscribers sb JOIN (SELECT SubId AS sid, COUNT(*)AS noSub FROM Subscriptions_Fulfilments GROUP BY SubId)AS ss ON sb.SubId = ss.sid
答案 2 :(得分:0)
只需尝试执行此查询:
选择不同的Sub_ID,从(SELECT Sub_ID,COUNT(Sub_ID)fcount FROM
Subscriptions_Fulfilments
开始计数 GROUP BY Sub_ID);