Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL menemukan akhir pekan pertama yang tersedia

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pesan kesalahan:Pengecualian di utas utama org.hibernate.HibernateException:Kesalahan saat mengakses aliran stax

  2. MySQL:SELECT dan COUNT dalam kueri yang sama

  3. Permintaan Pencarian PHP Mysql

  4. Bagaimana cara membuat driver Qt mysql di windows?

  5. cara menambahkan kolom baru setiap kali saya menjalankan program python