SQL查询数据库中的多个表

时间:2013-12-09 20:45:34

标签: sql database

我需要从数据库中查询3个表。 表Client包含客户端ID号。和客户名称。 表Property包含属性id no。和财产名称等。 表clientsInterestedInProperties包括客户端ID号。财产ID号。和访问财产的日期。

我想列出对特定属性感兴趣的客户名称(名称,而不是id。否)以及他们访问该属性的日期。

例如,该物业被称为Barker Hall,他对此感兴趣,他们何时访问?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

你想要的是IN条款:

SELECT * FROM Client
WHERE ClientId IN
(SELECT ClientID  
 FROM clientsInterestedInProperties cip
 INNER JOIN Property p
   ON cip.PropertyID = p.PropertyID
 WHERE p.ProperyName = @propertyName)

答案 1 :(得分:0)

首先,在 from 表中使用主过滤条件。所以你必须从左开始 选择 ... 来自物业 ...,

然后将访问连接到酒店。它将为每次访问生成不同的行,具有
LEFT JOIN 访问该物业

然后我们需要获得可读的客户名称,而不是ID,所以我们这样做 LEFT JOIN 获取客户名称

并且可以添加一些额外的过滤/条件 WHERE 子句(或INNER JOIN),如访问期间。

您的案例的示例SQL(我不知道您的表/列名称)

 select PropertyName, ClientsInProp_VisitDate, ClientName 
 from Property
   left join ClientsInProp on ClientsInProp_Propertyid = Property_PropertyID
   left join Client on Client_Clientid = ClientsInProp_ClientId 
 where Proprty_Name = 'House 1' and ClientsInProp_VisitDate > '01.10.2013'

干杯!