Saya pikir yang lain melewatkan pertanyaan ... Mereka pikir meja Anda mungkin sudah DIISI dengan semua akhir pekan dan beberapa status terbuka atau tidak ... Dugaan saya adalah bahwa meja Anda hanya MEMILIKI catatan JIKA sudah dipesan ... jadi Anda perlu menemukan catatan yang TIDAK ADA SAMA SEKALI... berdasarkan beberapa tanggal Pencarian otomatis...
Ini adalah modifikasi dari posting lain yang telah saya lakukan di sini
Meskipun saya tidak mengubah konteks kueri, saya hanya memasukkan kolom yang terkait dengan tabel ANDA. Saya mengerti Anda hanya akan melawan satu meja venue dan saya juga (sebenarnya). Namun, untuk memahami alias "JustDates", INNER PRE-QUERY ini membuat tabel SEMUA TANGGAL yang terisi secara dinamis dengan melakukan gabungan Cartesian terhadap tabel lain APAPUN. dalam hal ini, tabel reservasi "Tempat" Anda (saya tidak melakukannya) t melihat referensi nama tabel Anda yang sebenarnya secara eksplisit, jadi Anda harus mengubahnya). Jadi, ini pada dasarnya membuat tabel semua tanggal mulai dari apa pun "hari ini" dan berlangsung selama 30 hari (melalui batas), tetapi bisa menjadi 40, 50, 300 atau sebanyak yang Anda butuhkan.. asalkan "YourVenueTable" memiliki setidaknya catatan sebanyak hari yang ingin Anda uji. (klarifikasi yang sama di pos ini berasal dari). Hasil ini ditetapkan pada 30, 40 atau berapa hari sebelumnya difilter untuk HANYA pada hari tertentu dalam minggu 1-Minggu atau 7-Sabtu... Jadi itu harus mengembalikan kumpulan hasil hanya 23 Apr, 24 Apr, Apr 30, 1 Mei, 7 Mei, 8 Mei, 14 Mei, 15 Mei, 21 Mei, 28 Mei, dst.
Jadi SEKARANG Anda memiliki kumpulan hasil yang dibuat secara dinamis dari semua kemungkinan hari yang Anda pertimbangkan untuk maju. Sekarang, itu akan digabungkan ke tabel Reservasi Tempat Anda yang sebenarnya dan difilter untuk HANYA mengembalikan TANGGAL yang TIDAK ditemukan untuk id_venue yang Anda khawatirkan. Dalam contoh data Anda, itu AKAN menemukan kecocokan pada 23 dan 24 Apr dan TIDAK mengembalikan catatan itu. Sama dengan 30 Apr... Namun, itu AKAN menemukan bahwa rekor dalam daftar prakualifikasi yang mencakup 1 Mei TIDAK akan menemukan tanggal yang cocok di tabel venue dan dengan demikian memasukkannya seperti yang Anda antisipasi... Kemudian akan terus dilewati 7 dan 8 Mei, lalu kembali 14, 15, 21, 28 Mei, dst...
select JustDates.OpenDate
from
( select
@r:= date_add( @r, interval 1 day ) OpenDate
from
( select @r := current_date() ) vars,
Venue
LIMIT 30 ) JustDates
where
DAYOFWEEK( JustDates.OpenDate ) IN ( 1, 7 )
AND JustDates.OpenDate NOT IN
( select Venue.date
from Venue
where Venue.id_venue = IDYouAreInterestedIn
and Venue.Date = JustDates.OpenDate )
order by
JustDates.OpenDate
Catatan, dan per posting reservasi lainnya, permintaan untuk tanggal ketersediaan tanggal reservasi melakukan batas 30 di atas dapat berupa tabel APAPUN di sistem selama setidaknya memiliki SETIDAKNYA hari keluar yang Anda inginkan untuk reservasi.. . Jika Anda menginginkan semua ketersediaan untuk tahun mendatang, Anda ingin 365 catatan dalam tabel digunakan untuk hasil Cartesian agar @r bersepeda melalui catatan "tanggal" yang dibuat secara dinamis.