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

MySQL - Tìm thời gian trùng lặp

CHỈNH SỬA:sử dụng thông tin bổ sung, điều này hiện được giới hạn ở việc chỉ hiển thị những đặt phòng xung đột với một số đặt phòng EARLIER.

Tôi nghĩ điều này sẽ thực hiện được mẹo:

SELECT DISTINCT
    b2.booking_id, -- The later booking
    b2.booking_start,
    b2.booking_end,
    b2.creation_date,
    rb1.resource_id, -- The resource over which the two bookings clash
    b1.booking_id, -- The earlier booking
    b1.booking_start,
    b1.booking_end
FROM resource_booked rb1
    INNER JOIN booking b1 ON b1.booking_id = rb1.booking_id
    INNER JOIN booking b2 ON b1.booking_id <> b2.booking_id
        AND b2.booking_start BETWEEN b1.booking_start AND b1.booking_end
    INNER JOIN resource_booked rb2 ON rb2.resource_id = rb1.resource_id
        AND rb2.booking_id = b2.booking_id

Đây là cách nó được kiểm tra:

use tempdb

drop table resource_booked 
drop table Booking

create table Booking
(
    booking_id int,
    booking_start datetime,
    booking_end datetime,
    creation_date datetime
)

create table resource_booked 
(
    booking_id int,
    resource_id int
)

insert Booking values (1, '1 january 2000', '1 march 2000', '1 january 2000')
insert Booking values (2, '1 february 2000', '1 may 2000', '2 january 2000')
insert Booking values (3, '1 april 2000', '1 june 2000', '3 january 2000')
insert Booking values (4, '1 july 2000', '1 august 2000', '4 january 2000')

insert resource_booked values (1, 1)
insert resource_booked values (2, 1)
insert resource_booked values (3, 1)
insert resource_booked values (4, 1)
insert resource_booked values (1, 2)
insert resource_booked values (3, 2)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên bảng được chỉ định hai lần vừa là mục tiêu để cập nhật vừa là nguồn riêng biệt cho dữ liệu

  2. Truy vấn con với EXISTS so với IN - MySQL

  3. trường văn bản loại đầu vào đưa ra lỗi đã sửa 2147483647

  4. Ngoại lệ cú pháp trên trình kích hoạt với nhiều câu lệnh với MySQL và JDBC

  5. Khoảng cách tối thiểu và nhóm theo