这里可提供座位是我的数据库:SQL数据库:显示每个筛选
CREATE TABLE customer (
id INT AUTO_INCREMENT,
email VARCHAR(64) NOT NULL,
password VARCHAR(32) NOT NULL,
PRIMARY KEY (id)
) ENGINE = InnoDB;
CREATE TABLE movie (
id INT AUTO_INCREMENT,
title VARCHAR(64) NOT NULL,
runtime TIME NOT NULL,
certificate ENUM('U', 'PG', '12', '15', '18') NOT NULL,
PRIMARY KEY (id)
) ENGINE = InnoDB;
CREATE TABLE room (
id INT AUTO_INCREMENT,
roomNo ENUM ('Screen 1', 'Screen 2', 'Screen 3', 'Screen 4', 'Screen 5') NOT NULL,
PRIMARY KEY (id)
) ENGINE = InnoDB;
CREATE TABLE seat (
id INT AUTO_INCREMENT,
row ENUM('A', 'B', 'C', 'D', 'E', 'F') NOT NULL,
num ENUM('1', '2', '3', '4', '5', '6', '7', '8', '9', '10') NOT NULL,
roomID INT,
PRIMARY KEY (id),
FOREIGN KEY (roomID)
REFERENCES room (id)
) ENGINE = InnoDB;
CREATE TABLE screening (
id INT AUTO_INCREMENT,
movieID INT,
movieDate DATE NOT NULL,
movieTime TIME NOT NULL,
roomID INT,
PRIMARY KEY (id),
FOREIGN KEY (movieID)
REFERENCES movie (id),
FOREIGN KEY (roomID)
REFERENCES room (id)
) ENGINE = InnoDB;
CREATE TABLE booking (
id INT AUTO_INCREMENT,
customerID INT,
screeningID INT,
seatID INT,
PRIMARY KEY (id),
FOREIGN KEY (customerID)
REFERENCES customer(id),
FOREIGN KEY (screeningID)
REFERENCES screening (id),
FOREIGN KEY (seatID)
REFERENCES seat (id)
) ENGINE = InnoDB;
这是我使用的查询:
SELECT s.id, s.row, s.num, s.roomID
FROM seat s
INNER JOIN screening scr
ON scr.roomID = s.roomID
LEFT JOIN booking b
ON s.id = b.seatID
WHERE b.seatID IS NULL AND scr.id = 6
所以我的问题是,对筛查ID = 2, roomID是1(意思是屏幕1)。说一个预订了seatID'1'的客户,这意味着行A,筛选1的座位编号为1.当我运行此查询以显示另一个筛选标识的可用座位,其中例如6和房间相同(筛选1)时,它会显示除了seatID 1以外的所有座位,这是由另一位客户预订的。
我想要的是每个放映都有自己的座位,问题在于它对于每个房间。因此,如果另一个放映(电影)恰巧使用同一个房间,它将与另一个使用相同房间的放映相冲突。
添加了MySQL标签。 –
哇!我读过全文。 –
*谢谢*表格创建脚本。为了测试我们的答案,是否可以添加一些表格填充脚本? – toonice