Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chồng chéo Truy vấn Đặt chỗ

Hãy xem xét những điều sau.

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    |
+--------------+----------------+

Trên thực tế, trừ khi bị ràng buộc trong một giao dịch, một CHỌN như thế này khá vô nghĩa, vì người dùng khác có thể dễ dàng đến và thực hiện đặt chỗ trong khi bạn vẫn đang kiểm tra tình trạng còn hàng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xuất danh sách các liên kết cố định đẹp và tiêu đề bài đăng

  2. chèn lệnh bị từ chối trong mysql

  3. Cách cài đặt WordPress:Phần mềm máy chủ

  4. Không thể kết nối với máy chủ MySQL trên '127.0.0.1' (10061) (2003)

  5. Lấy Id được chèn lần cuối từ MySQL trong Yii