このMySQLクエリがあります:
select day(ReservationDate) as ReservationDay, sum(SleighSeats) as SleighSeats, sum(CabSeats) as CabSeats, 0 as IsFullMoon, '' as OverrideText
from Reservations
where month(ReservationDate) = 2
group by ReservationDate
union
select day(CalendarDate) as ReservationDay, 0 as SleighSeats, 0 as CabSeats, IsFullMoon, OverrideText
from CalendarOverrides
where month(CalendarDate) = 2
group by CalendarDate
order by ReservationDay
Reservations テーブルには、特定の暦日の任意の数のレコードを含めることも、まったく含めないこともできます。CalendarOverrides テーブルには、カレンダーの日付ごとに正確に 1 個または 0 個のレコードを含めることができます。結果をまとめようとしていますが、うまくいきません。
ここに私の結果セットがあります:
予約日23日が問題です。これら 2 つのレコードを 1 つにマージして、5 つの値が23、6、8、1
、[空白/null]
になるようにします。明確にするために:
- ReservationDay は両方のテーブルにあります (CalendarOverrides の CalendarDate という名前)
- SleighSeats と CabSeats が存在します。 Reservations テーブルのみ
- IsFullMoon と OverrideText は CalendarOverrides テーブルにのみ存在し
ますユニオンの一番上のクエリは、同じ ReservationDay のすべての Reservations レコードを既にマージしていますが、一番下のクエリのレコードを一番上のクエリのレコードとマージするにはどうすればよいですか?同じ予約日ですか?(そのため、特定の日に複数のレコードが存在することはありません。)