SQL—显示表中外键值与另一个表中的主键值匹配的记录


SQL - Displaying records from a table where the foreign key value matches the primary key value in another table

我的标题可能不能充分解释我的问题,所以如果有必要,请随时编辑。

我正在创建一个项目,其中用户使用HTML和PHP页面访问数据库预订宾馆。

我做了一个页面,询问用户他们想住在哪个城市,并显示他们选择的城市中所有宾馆的名称。(Name只是一个普通列,没有主键)然后,我想问他们想住哪一家宾馆,并展示该宾馆的房间。

然而,我不确定我需要写什么查询来做到这一点。

rooms表有一个外键GuestHouseID_FK,它链接到guest_house表中的主键GuestHouseID(自动递增)。因此,特定宾馆的每个房间都有相同的身份证号。

所以我的问题是,我可以写一个查询,显示Rooms表中所有的房间,其中GuestHouseID_FK值与他们选择的宾馆名称的GuestHouseID值相匹配吗?

这里是SQL,所以你可以看到名字:

CREATE TABLE Guest_House (
GuestHouseID int(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
City varchar(30) NOT NULL,
NumOfRooms int(2) NOT NULL,
Name varchar(30) NOT NULL,
Rating char(5) NOT NULL
);
CREATE TABLE Rooms (
Room_Number int(2) NOT NULL AUTO_INCREMENT PRIMARY KEY,
NumOfBeds int(2) NOT NULL,
Ensuite char(1) NOT NULL,
Room_Service char(1) NOT NULL,
CostPerDay double(10, 2) NOT NULL,
GuestHouseID_FK int(4) NOT NULL,
INDEX GuestHouseID_FK (GuestHouseID_FK),
CONSTRAINT rooms_guest_house FOREIGN KEY (GuestHouseID_FK) REFERENCES Guest_House (GuestHouseID)
ON DELETE CASCADE ON UPDATE CASCADE
);

一如既往,我很感谢你的回答,如果这有点含糊,我很抱歉。

这是查询。

select Rooms.* from Rooms 
Left Join Guest_House ON (Guest_House.GuestHouseID = Rooms.GuestHouseID_FK)
where Guest_House.GuestHouseID = "your id" ;