我需要从数据库中查询3个表。 表Client包含客户端ID号。和客户名称。 表Property包含属性id no。和财产名称等。 表clientsInterestedInProperties包括客户端ID号。财产ID号。和访问财产的日期。
我想列出对特定属性感兴趣的客户名称(名称,而不是id。否)以及他们访问该属性的日期。
例如,该物业被称为Barker Hall,他对此感兴趣,他们何时访问?
有人可以帮忙吗?
答案 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'
干杯!