gpt4 book ai didi

mysql - 如何编写查询来计算另一个表中没有外键的特定记录数?

转载 作者:行者123 更新时间:2023-11-30 23:00:38 25 4
gpt4 key购买 nike

下面是我的Db的er图 ER-diagram我想从表 Subscription 中获取给定 Subscription.ClientId 的所有结果,每个 Subscription.RouteId 的 Assigned.ScreenId 的数量为该 Subscription.ClientId。我试过下面的代码,我也试过调整关系但没有成功,我怎么能在 yii 中做到这一点。

SELECT S. * , (

SELECT COUNT( C.ScreenId )
FROM (

SELECT B.ScreenId, A.RouteId, B.clientId
FROM Screens AS A
INNER JOIN Assigned AS B ON A.ScreenId = B.ScreenId
) AS C
WHERE S.RouteId = C.RouteId
) AS couNTER
FROM Subscription AS S
LIMIT 0 , 30

这是示例 http://sqlfiddle.com/#!2/38f2e7 的链接[注意:我删除了表格 subscribedscreens]

我想要的输出是

RouteId ClientId NumScreen NumAds... (Count(assignedScreenid)for given route)
1 1 2
2 1 1
1 2 1
2 2 3

最佳答案

试试下面的 sql,如果结果不是您想要的结果,那么也许可以澄清您期望的结果。

-- SELECT subscription.SubscriptionId, client.clientId, assigned.ScreenId, route.RouteId
SELECT route.RouteId, client.clientId, COUNT(assigned.ScreenId)
FROM subscription
LEFT JOIN client ON client.ClientId = subscription.ClientId
LEFT JOIN assigned ON assigned.ClientId = client.ClientId
LEFT JOIN route ON route.RouteId = subscription.RouteId
GROUP BY assigned.ScreenId

结果:

ROUTEID   CLIENTID   COUNT(ASSIGNED.SCREENID)
2 1 4
2 1 2
2 1 6
1 2 2

关于mysql - 如何编写查询来计算另一个表中没有外键的特定记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com