我有两个表,一个属性表和一个买家表,我正在尝试编写一个选择脚本,该脚本将显示一个属性列表,这些属性的房间数与指定客户所需的房间数相同。
我认为我需要使用内部联接来提取我需要的数据,但由于我对此仍然陌生,所以我有点困惑。我写的选择脚本如下,
SELECT DISTINCT Buyer.Buyer_Surname, Buyer.Rooms_Needed, Property.Property_Address as Property_for_sale, Property.Num_Rooms as Property_No_of_Rooms
FROM Buyer
INNER JOIN Property
ON Property.Buyer_ID = Buyer.Buyer_ID
WHERE Buyer.Rooms_Needed = '5'
AND Property.Num_Rooms = '5'
AND Buyer.Buyer_ID = '70000';
然而,它告诉我没有选择任何行,但我知道有一个买家需要 5 间卧室,并且数据库中有 3 处特性有 5 间卧室。
这是我的表格;
CREATE TABLE Buyer
(
Buyer_ID varchar(5) NULL,
Viewing_Data varchar2(50),
Maximum_Budget varchar2(50),
Purchase_Price varchar2(50),
Purchase_Date DATE,
Buyer_Forename varchar2(50),
Buyer_Surname varchar2(50),
Buyer_Address varchar2(50),
Buyer_Town varchar2(50),
Buyer_Postcode varchar2(10),
Rooms_Needed varchar2(10),
Seller_ID Varchar2(5),
Staff_ID varchar2(5),
PRIMARY KEY (Buyer_ID),
FOREIGN KEY (Staff_ID) REFERENCES Staff(Staff_ID),
FOREIGN KEY (Seller_ID) REFERENCES Seller(Seller_ID)
);
CREATE TABLE Property
(
Property_ID varchar(5),
Property_Address varchar(25),
Property_Town varchar(25),
Property_Postcode varchar(25),
Asking_Price varchar2(20),
Date_Registered DATE,
Property_Type varchar2(50),
Num_Rooms varchar2(50),
Buyer_ID varchar(5),
Seller_ID varchar(5),
Branch_ID varchar(5),
PRIMARY KEY (Property_ID),
FOREIGN KEY (Buyer_ID) REFERENCES Buyer(Buyer_ID),
FOREIGN KEY (Seller_ID) REFERENCES Seller(Seller_ID),
FOREIGN KEY (Branch_ID) REFERENCES Branch(Branch_ID)
);
最佳答案
您正在选择买家和属性(property) ID。如果这些排列一致,你会很幸运,但你的结果仍然不正确。要加入房屋拥有买家想要的房间数量的表,您需要加入房间数量:
SELECT DISTINCT Buyer.Buyer_Surname, Buyer.Rooms_Needed,
Property.Property_Address as Property_for_sale, Property.Num_Rooms as
Property_No_of_Rooms
FROM Buyer
INNER JOIN Property
ON Buyer.Rooms_Needed = Property.Num_Rooms;
如果需要按房间数过滤,还可以在末尾附加 WHERE:
... WHERE Buyer.Rooms_Needed = 5;
关于sql - 如何连接两个表但只返回匹配的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732539/