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

时间:2015-09-12 08:39:27

标签: php mysql database

我的标题可能无法充分解释我的问题,因此如有必要,请随时修改。

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

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

但是,我不确定我需要写什么查询才能这样做。

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

所以我的问题是,我可以编写一个显示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
);

与往常一样,我感谢您的回答,如果这有点模糊,我会道歉。

1 个答案:

答案 0 :(得分:2)

这是查询。

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