如何使用一个SQL查询对嵌套表中的行进行计数?

时间:2019-02-05 12:03:10

标签: mysql sql

我有三个桌子。每个User可以有多个Subscriptions,每个Subscription可以有多个Payments

我的目标是使用一个SQL查询为单个Payments计算所有User。有可能这样做吗?

在以下情况下,具有User的{​​{1}}的结果应为 2 (因为id 1有两个User)< / p>

Payments

2 个答案:

答案 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的答案。