0
SELECT b.PlateNumber, BusModel, Count(DISTINCT d.StaffID) AS NumberOfDirvers
FROM Bus b, Trip t, Driver d, Staff s
WHERE b.PlateNumber = t.PlateNumber 
AND t.StaffID = d.StaffID
AND d.StaffID = s.StaffID
AND b.capacity = 72
AND EXTRACT(MONTH FROM s.DateOfBirth) BETWEEN '07' AND '12'
GROUP BY PlateNumber, BusModel;

显然有些公共汽车还没有与任何司机一起旅行,但我的代码似乎无法将司机人数显示为 0。我该如何显示呢?

问题:

给定一个公共汽车容量,比如 72,找到具有指定容量的公共汽车集合。

对于集合中的每辆巴士,请列出:

  • (i) 巴士车牌号,
  • (ii) 模型,以及
  • (iii) 在 7 月至 12 月之间出生并同时驾驶过公交车的唯一司机总数(如果没有这样的司机,则预计为 0)。
4

1 回答 1

1

用于 IFNULL(value, 0)显示0未找到驱动程序。此外,您可能希望通过使用来增强您的查询JOINS

SELECT b.PlateNumber, BusModel, IFNULL(Count(DISTINCT d.StaffID), 0) AS NumberOfDirvers
FROM Bus b LEFT JOIN Trip t ON b.PlateNumber = t.PlateNumber
LEFT JOIN Driver d ON t.StaffID = d.StaffID
LEFT JOIN Staff s d.StaffID = s.StaffID
WHERE EXTRACT(MONTH FROM s.DateOfBirth) BETWEEN '07' AND '12'
GROUP BY b.PlateNumber, BusModel;
于 2013-03-20T10:34:54.657 回答