まず最初は、一日一日の日付の表です。さて、mysqlは私のものではないので、できる限りやっていることについて多くの情報を書き留めようとします。これらの例を修正してください。
日付のテーブルは、最後の予約日をチェックし、欠落した日付を日付の表に追加するジョブによって準備される場合があります。これがあなたが受け入れるものでなければ、他の解決策はテーブルを動的に作成することですが、いくつかの危険があります。私の知る限りでは、このようなテーブルを作成する方法はありませんが、あなたはあなたの予約テーブルから明確な日付を選択することで、事実上、作業代理を行うと、クエリ自体で行われた日のテーブルでこれに参加渡ることができます。
((select distinct checkIn from bookings union select distinct checkOut from bookings)
cross join (select 0 union select 1 union select 2 ...))
日のリストには、チェックイン日と各チェックインとチェックアウト日の間の最大の差異が含まれている必要があります。これは、あなたが目を保つ必要があるか、単にリストを十分に大きくする、例えば百日間にする必要があるものです。
ここで日付の表があるので、この日付と一致する予約を数えなければなりません。完全なクエリは、次のようになります。
select tableOfDates.date, count(bookings.checkIn) bookings
from
(
(
select distinct dates.date + INTERVAL days.day DAY -- OR HOWEVER you add days in mysql
from
(select distinct checkIn date from bookings union select distinct checkOut from bookings) dates
cross join (select 0 day union select 1 union select 2 union 3 union 4 union 5 union 6 union 7) days
)
) tableOfDates
left join bookings
on tableOfDates.date between bookings.checkIn and bookings.checkOut
where tableOfDates.date between [YOUR DATE RANGE]
SELECT COUNT(予約)FROMテーブルWHERE DATE [日付構文間] GROUP BY日付 'を実行してください。ここでのキーは 'GROUP BY'節と' COUNT() 'です。これらは合わせて、毎日の予約数をカウントします。 – Bojangles