对表上的列关系记录进行多对多计数



>我有4张桌子:CLIENT_SERVICEBOOKINGBOOKING_PETSPETS,基本上一个clientService可以有很多预订,一个预订可以通过BOOKING_PETS桌子有很多宠物。所以我想知道查询CLIENT_SERVICE记录并计算每个预订记录的宠物总数的方法。

例如,如果我有 2 条预订记录,一条有 2 只关联的宠物,另一条有 1 只关联的宠物,那么我希望在响应中出现一列宠物的总和,如下所示:

-----------------------------------
serv_id | bookingCount | petCount |
-----------------------------------
1    |      2       |    3     |
-----------------------------------
2    |      1       |    2     |
-----------------------------------

这是我的实际查询:

SELECT
booking_id,
cliserv_id AS id,
COUNT(DISTINCT boopet_id) AS petCount
FROM CLIENT_SERVICE
LEFT OUTER JOIN BOOKING ON cliserv_id = booking_client_service_id
LEFT OUTER JOIN (
BOOKING_PETS INNER JOIN PET ON pet_id = boopet_pet_id
) ON booking_id = boopet_booking_id
GROUP BY cliserv_id, booking_id, boopet_id;

你只需要

GROUP BY cliserv_id, booking_id

如果包括boopet_id,则每组将只有1只宠物。

相关内容

  • 没有找到相关文章