统计table上多对多列关系的记录
Count the records of column relation on table with many to many
我有4个table:CLIENT_SERVICE
、BOOKING
、BOOKING_PETS
、PETS
,基本上一个clientService
可以有很多预订通过 BOOKING_PETS
table,一次预订可以拥有多只宠物。所以我想知道如何查询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 只宠物。
我有4个table:CLIENT_SERVICE
、BOOKING
、BOOKING_PETS
、PETS
,基本上一个clientService
可以有很多预订通过 BOOKING_PETS
table,一次预订可以拥有多只宠物。所以我想知道如何查询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 只宠物。