我有一個基于酒店資料的SQL表。我有兩個表和一個橋表來連接它們。我還在學習,所以我確信這其中有些是不理想的,或者有潛在的風險。
客人表
CREATE TABLE Guest
(
Guest_ID INT PRIMARY KEY IDENTITY (1,1)。
GuestName NVARCHAR(60) NOT NULL。
Street NVARCHAR(50) NOT NULL。
城市 NCHAR(30) 非 NULL,
[State] CHAR(2) NOT NULL,
CONSTRAINT [State.State].
FOREIGN KEY ([State]) REFERENCES [State]([State])。
Zip CHAR(5) NOT NULL,
Phone VARCHAR(15) Not NULL
房間表
CREATE TABLE Room
(
Room_ID SMALLINT PRIMARY KEY,
Room_Type_ID SMALLINT NOT NULL,
CONSTRAINT Room_Type_ID
FOREIGN KEY (Room_Type_ID) REFERENCES Room_Type([Type_ID]) 。
Amenity_Type_ID SMALLINT NOT NULL,
CONSTRAINT Amenity_Type_ID
FOREIGN KEY (Amenity_Type_ID) REFERENCES Amenity_Type([Type_ID])
);
橋接表(預訂)
CREATE TABLE Guest_Bridge_Rooms
(
Guest_ID INT NOT NULL。
CONSTRAINT Guest_ID
FOREIGN KEY (Guest_ID) REFERENCES Guest(Guest_ID)。
Room_ID SMALLINT NOT NULL,
CONSTRAINT Room_ID
FOREIGN KEY (Room_ID) REFERENCES Room(Room_ID)。
Date_Start DATE NOT NULL,
Date_End DATE NOT NULL,
Occ_Adults SMALLINT NOT NULL,
Occ_Children SMALLINT NOT NULL,
Price_Total DECIMAL(13,2) NOT NULL)
);
現在有了這些表,我想寫一個腳本,通過把給定的Guest_ID和相關表中的GuestName聯系起來,洗掉所有預訂(橋接表)有特定客人NAME的記錄。我可以簡單地使用Guest_ID,但這不是這里的目標。
例如,類似于
的東西DELETE FROM Guest_Bridge_Rooms
WHERE Guest[ID].GuestName = 'John Doe'/span>;
是否有一個簡單的方法來做到這一點?
uj5u.com熱心網友回復:
你可以使用一個子查詢:
你可以使用一個子查詢。
DELETE FROM Guest_Bridge_Rooms
WHERE Guest_ID = (SELECT g. Guest_Id FROM Guests g WHERE g.GuestName = 'John Doe'/span>)。)
注意:確切的語法可能會有所不同,這取決于資料庫的情況。 這也假設GuestName在Guests中是唯一的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322138.html
標籤:
下一篇:在SQL中加入最大值
