我有三个桌子。每个User
可以有多个Subscriptions
,每个Subscription
可以有多个Payments
。
我的目标是使用一个SQL查询为单个Payments
计算所有User
。有可能这样做吗?
在以下情况下,具有User
的{{1}}的结果应为 2 (因为id 1
有两个User
)< / p>
Payments
答案 0 :(得分:3)
尝试通过以下方式使用联接和聚合
SELECT u.id, u.Name, COUNT(p.id) AS numberofpayment
FROM users u
Left JOIN Subscriptions s ON u.Id=s.userId
Left JOIN Payments p ON s.id=p.subscriptionId
GROUP BY u.id, u.Name
答案 1 :(得分:1)
您可以尝试执行以下操作:
SELECT COUNT(p.Id) AS PaymentCount
FROM Users u
LEFT JOIN Subscriptions s ON u.Id=s.userId
LEFT JOIN Payments p ON s.id=p.subscriptionId
WHERE u.Id = @yourUserID
请注意COUNT(p.Id)
-这表示现有付款的数量。
PS:@Kickstart的答案。