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

SQL Untuk memeriksa apakah kamar tersedia di antara tanggal

Ini akan menjawab pertanyaan khusus Anda dengan ya atau tidak. Saya tidak yakin ini berguna karena nilai pencarian tanggal semuanya spesifik dalam daftar kode keras.

select coalesce(max('no'), 'yes') as available
from tbl t           
where room_type_id = 23 and
    dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00", 
           "2018-03-08 00:00:00", "2018-03-09 00:00:00");

Jika logika Anda dimaksudkan untuk menemukan setidaknya satu yang terbuka tanggal maka Anda dapat mencoba sesuatu seperti ini:

select case when count(*) = 4 then 1 else 0 end as whatever_this_means
from tbl t
where room_type_id = 23 and
    dt in ("2018-03-06 00:00:00", "2018-03-07 00:00:00", 
           "2018-03-08 00:00:00", "2018-03-09 00:00:00");

Masalahnya adalah Anda telah membuat kode keras nilai 4 sekarang yang terkait dengan jumlah tanggal dalam daftar nanti dalam kueri. Ada beberapa cara untuk menangani ini secara lebih dinamis, tetapi dari pertanyaan Anda tidak sepenuhnya jelas cara terbaik untuk melakukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL GROUP_CONCAT dengan COLUMN SPLIT

  2. MySQL MENGOPTIMALKAN semua tabel?

  3. Array keluaran MySQL/PHP mengulangi kueri dan kemudian menunjukkan hasil, bagaimana saya bisa menghapus kueri?

  4. Hubungan Laravel di atas meja dengan dua jenis flag

  5. Pemasang MySql 5.7 gagal mendeteksi VS 2013 yang dapat didistribusikan kembali