我有两个密切相关的 mySQL 表:Box 和 Schedule。
这些表仅通过许多其他表连接相关。
一个盒子有一个订阅 ID,一个订阅有一个盒子内容 ID,一个盒子内容有一个计划 ID。
许多盒子有一个订阅 一个订阅有很多 boxContents 许多 boxContents 有一个 Schedule
我需要获取附加到盒子的所有时间表详细信息,并按盒子的交货日期对它们进行分组。
我遇到的问题是,我无法弄清楚如何对它们进行分组或加入它们,以便订阅和 boxcontents 数据不会用无效结果填充结果。
例如:
SELECT
Box.expected_delivery_date, count(Box.id) num_boxes
FROM
Box
WHERE
Box.state = 3 AND Box.status = 2
GROUP BY Box.expected_delivery_date;
返回我需要查找的正确数量的框:
2010-10-01 - 2
2010-10-07 - 4
但是,当我包含需要将两者链接在一起的表时,我得到的所有数据都会混淆结果
SELECT
Box.expected_delivery_date, count(Box.id) num_boxes
FROM
Box
JOIN
Subscription ON Box.subscription_id = Subscription.id
JOIN
BoxContent ON Subscription.id = BoxContent.subscription_id
JOIN
Schedule ON Schedule.id = BoxContent.schedule_id
WHERE
Box.state = 3 AND Box.status = 2
GROUP BY Box.expected_delivery_date;
回报:
2010-10-01 - 10
2010-10-07 - 17
我确信有一种简单的方法可以做到这一点,我只是不擅长 SQL。