MySQL-每日概述仅显示当前的预订,而不是全部

问题描述 投票:-1回答:1

[我试图查看可以在其中选择特定日期的视图,它将返回当前日期细分的所有房间的列表。

当前显示的是特定日期的每日概览,但缺少显示所选日期没有DONT预订的房间?

((即使没有预订,我也需要显示所有房间的每日概览)

我如何更改此设置,以便即使当天没有预订特定房间以及可以预订的房间,它也会显示所有房间?

当前显示(适用于2019-11-24):] >>

SELECT * FROM `Daily Overview` WHERE '2019-11-24' >= StartDate AND '2019-11-24' <= EndDate;

3   Family  2   2019-11-24  2019-11-28  4   2   2,3 Ahri,Blitz
4   Dual    1   2019-11-22  2019-11-25  2   1   1   Aatrox

所需输出:

1
2
3   Family  2   2019-11-24  2019-11-28  4   2   2,3 Ahri,Blitz
4   Dual    1   2019-11-22  2019-11-25  2   1   1   Aatrox
5
6
8
9
10

查看脚本:

]
CREATE VIEW `Daily Overview` AS
SELECT ROOMINFO.ID as Room, ROOMINFO.`Type`,
    BOOKROOM.Ref as Ref,
    BOOK.Start_Date as StartDate,
    BOOK.End_Date as EndDate
FROM ROOMINFO
JOIN BOOKROOM ON ROOMINFO.ID = BOOKROOM.ID
JOIN BOOK ON ROOMINFO.ID AND BOOK.Ref = BOOKROOM.Ref
GROUP BY ROOMINFO.ID, ROOMINFO.`Type`, ROOMINFO.Max, Ref;

表数据和结构脚本:

] >>
CREATE SCHEMA CATTERY2;
USE CATTERY2;

CREATE TABLE BOOK( Ref INT NOT NULL AUTO_INCREMENT, Start_Date DATE NOT NULL, End_Date DATE NOT NULL, PRIMARY KEY(Ref));
CREATE TABLE ROOMINFO( ID INT NOT NULL AUTO_INCREMENT,`Type` VARCHAR(10) NOT NULL, Max TINYINT NOT NULL, PRIMARY KEY(ID));
CREATE TABLE BOOKROOM( Ref INT NOT NULL, ID INT NOT NULL, FOREIGN KEY (Ref) REFERENCES BOOK(Ref), FOREIGN KEY (ID) REFERENCES ROOMINFO(ID));

INSERT INTO BOOK(Start_Date, End_Date) VALUES   
("2019-11-22", "2019-11-25"), ("2019-11-24", "2019-11-28");

INSERT INTO ROOMINFO (ID, `Type`,Max) VALUES
(1, "Family", 4), (2, "Family", 4), (3, "Family", 4), (4, "Dual", 2),
(5, "Dual", 2),   (6, "Dual", 2), (7, "Dual", 2),   (8, "Dual", 2),
(9, "Dual", 2),   (10, "Dual", 2);

INSERT INTO BOOKROOM( Ref, ID ) VALUES
    (1, 4), (2, 3);

我正在尝试查看可以在其中选择特定日期的视图,它将返回当前日期细分的所有房间的列表。当前,它显示特定日期的每日概览,但缺少...

mysql join select view
1个回答
0
投票

请考虑以下内容。请注意,我对您的结构进行了一些修改,以帮助理解:

DROP SCHEMA IF EXISTS cattery2;

CREATE SCHEMA CATTERY2;
USE CATTERY2;

CREATE TABLE cats
(cat_id SERIAL PRIMARY KEY
,name VARCHAR(30) 
,sex CHAR(1) NOT NULL
);

CREATE TABLE bookings
(booking_id SERIAL PRIMARY KEY
,start_Date DATE NOT NULL
,end_date DATE NOT NULL
);

CREATE TABLE rooms
(room_id SERIAL PRIMARY KEY
,capacity TINYINT NOT NULL
);

CREATE TABLE room_booking
(room_id INT NOT NULL
,booking_id INT NOT NULL
,PRIMARY KEY(room_id,booking_id)
);

CREATE TABLE cat_booking
(cat_id INT NOT NULL
,booking_id INT NOT NULL
,PRIMARY KEY(cat_id,booking_id)
);  

INSERT INTO bookings(start_date, end_date) VALUES   
("2019-11-22", "2019-11-25"), 
("2019-11-24", "2019-11-28"), 
("2019-12-01", "2019-12-02"), 
("2019-12-01", "2019-12-06"),
("2019-12-02", "2019-12-03"), 
("2019-12-04", "2019-12-10"), 
("2019-12-04", "2019-12-10"), 
("2019-12-05", "2019-12-13"),
("2019-12-16", "2019-12-19"), 
("2019-12-26", "2019-12-28"), 
("2019-12-26", "2020-01-01"), 
("2019-12-28", "2020-01-02"),
("2019-12-31", "2020-01-05"), 
("2020-01-03", "2020-01-08"), 
("2020-01-05", "2020-01-11"), 
("2020-01-06", "2020-01-09"),
("2020-01-06", "2020-01-11"), 
("2020-01-08", "2020-01-18"), 
("2020-01-11", "2020-01-15"), 
("2020-01-15", "2020-01-17"),
("2020-01-15", "2020-01-18");

INSERT INTO rooms (room_id,capacity) VALUES
( 1,4), 
( 2,4), 
( 3,4), 
( 4,2),
( 5,2),   
( 6,2), 
( 7,2),   
( 8,2),
( 9,2),
(10,2);

INSERT INTO room_booking (booking_id,room_id) VALUES
( 1,  4), 
( 2,  3), 
( 3,  4), 
( 4,  5),
( 5,  6), 
( 6,  7), 
( 7,  3), 
( 8,  2),
( 9,  1), 
(10,  8), 
(11,  3),
(12,  9),
(13,  2),
(14, 10), 
(15,  4),
(16,  5),
(17,  6),
(18,  7),
(19,  2),
(20,  1),
(21, 10);

INSERT INTO cats (name,sex) VALUES
('Aatrox', 'm'), 
('Ahri', 'f'), 
('Blitz', 'm'), 
('Curley', 'm'),
('Mandy', 'm'), 
('Nami', 'f'), 
('Kog', 'm'), 
('Caitlyn', 'f'),
('Barney', 'm'), 
('Gnar', 'm'), 
('Charley', 'f'), 
('Bundy', 'm'),
('Ringo', 'm'), 
('Smiley', 'm'), 
('Bentley', 'f'), 
('Barney', 'm'),
('Yuumi', 'f'), 
('Rammus', 'm'), 
('Viktor', 'm'), 
('Xerath', 'm'),
('Azir', 'm'), 
('Reginald', 'm'), 
('Harry', 'm'), 
('Indie', 'f'),
('Dotty', 'f'), 
('Wesley', 'm'), 
('Karma', 'f'), 
('Nami', 'f'),
('Nautalus', 'm'), 
('Tristy', 'f'), 
('Kaisa', 'f'), 
('Baron', 'm'),
('Braum', 'm'), 
('Alistar', 'm'), 
('Ahri', 'f');

INSERT INTO cat_booking(booking_id,cat_id) VALUES
 ( 1,  1), 
 ( 2,  2), 
 ( 2,  3), 
 ( 3,  1),
 ( 4,  2), 
 ( 5,  3), 
 ( 5,  4), 
 ( 6,  5),
 ( 7,  6), 
 ( 7,  7),  
 ( 7,  8), 
 ( 8,  9),
 ( 8, 10), 
 ( 8, 11), 
 ( 9, 12), 
 ( 9, 13),
 ( 9, 14), 
 (10, 15), 
 (11, 16), 
 (11, 17),
 (11, 18), 
 (12, 19), 
 (12, 20), 
 (13, 21),
 (13, 22), 
 (13, 23), 
 (14, 24), 
 (14, 25),
 (15, 26), 
 (16, 27), 
 (16, 28), 
 (17, 29),
 (18, 30), 
 (19, 31), 
 (19, 32), 
 (20, 33),
 (20, 34), 
 (21, 35);
© www.soinside.com 2019 - 2024. All rights reserved.