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

Permintaan Pemesanan yang Tumpang Tindih

Pertimbangkan hal berikut.

DROP TABLE IF EXISTS apartment;

CREATE TABLE apartment
(apartment_id SERIAL PRIMARY KEY
,apartment_name varchar(255) NOT NULL 
);

INSERT INTO apartment VALUES
(1, 'Apartment 1'),
(2, 'Apartment 2'),
(3, 'Apartment 3'),
(4, 'Apartment 4');

DROP TABLE IF EXISTS booking;

CREATE TABLE booking 
(booking_id SERIAL PRIMARY KEY
,start_date DATE NOT NULL
,end_date DATE NOT NULL
,apartment_id INT NOT NULL
);

INSERT INTO booking VALUES
(1, '2018-07-18', '2018-07-20', 1),
(2, '2018-07-21', '2018-07-23', 1),
(3, '2018-07-18', '2018-07-20', 2);



SELECT a.* 
  FROM apartment a 
  LEFT 
  JOIN booking b 
    ON b.apartment_id = a.apartment_id 
   AND b.start_date <= '2018-07-23' 
   AND b.end_date > '2018-07-21'
 WHERE b.booking_id IS NULL;
+--------------+----------------+
| apartment_id | apartment_name |
+--------------+----------------+
|            2 | Apartment 2    |
|            3 | Apartment 3    |
|            4 | Apartment 4    |
+--------------+----------------+

Dalam praktiknya, kecuali terikat dalam suatu transaksi, SELECT seperti ini tidak berarti apa-apa, karena pengguna lain dapat dengan mudah datang dan melakukan pemesanan saat Anda masih memeriksa ketersediaan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah urutan kolom penting di tabel MySQL Anda?

  2. Bagaimana saya bisa menginisialisasi database MySQL dengan skema dalam wadah Docker?

  3. Cara Menghitung Median di MySQL

  4. Tambahkan indeks FULLTEXT di Doctrine 2 menggunakan anotasi?

  5. Grup MySQL Berdasarkan Jam