【问题标题】:Count the records of column relation on table with many to many用多对多统计表上列关系的记录
【发布时间】:2019-09-25 18:37:59
【问题描述】:

我有 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;

【问题讨论】:

  • 只需在 SELECT 子句中再添加一个 COUNT(..) 表达式。在这种情况下,要计算客户端服务中的所有宠物,请添加 COUNT(Pets.pet_id)

标签: mysql database count many-to-many relational-database


【解决方案1】:

你只需要

GROUP BY cliserv_id, booking_id

如果您包含boopet_id,则每个组将仅以一只宠物结束。

【讨论】:

  • 答案是如此相似。我也从查询和组中排除了booking_id,并且按预期工作。我将标记为已接受,因为是相同的理论,但只是应用于其他领域
猜你喜欢
  • 2014-09-24
  • 2014-01-10
  • 2023-03-25
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
相关资源
最近更新 更多