2016-01-11 94 views
2

我有两个表,一个属性表和一个买家表,我试图编写一个选择脚本,它将显示具有相同数量的属性列表房间作为指定顾客的所需房间数量。我如何加入两个表,但只返回匹配的行

我想我需要使用内部连接来提取我需要的数据,但由于我对此仍然陌生,所以我感到有点困惑。我写的选择脚本如下,

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间卧室和5间卧室数据库3种性质买家。

这是我的桌子;

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) 
); 
+0

如果卧室匹配,那么买方id不匹配。 –

回答

2

您选择买方和物业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; 
+0

完美!这工作,谢谢! –

1

试试这个而不是加入对Buyer.Id和Property.BuyerId

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.Rooms_Needed = Property.Num_Rooms 
WHERE Buyer.Buyer_ID = '70000'; 

这将通过用户ID找到所需的卧室数所有属性70000

+0

谢谢,现在这很有道理。 –

相关问题