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 に答える