2013-12-09 20 views
0

我需要查詢數據庫中的3個表。 表客戶端包括客戶端ID號。和客戶名稱。 表格屬性包含屬性ID號。和其他物業名稱。 表clientsInterestedInProperties包括客戶端ID號。 property id no。和訪問財產的日期。SQL查詢數據庫中的多個表

我想列出對特定房產(名稱,不是身份證號碼)感興趣的客戶名稱以及他們訪問該房產的日期。

舉個例子,說這個房產叫做Barker Hall,他對此感興趣,他們什麼時候去拜訪?

任何人都可以幫忙嗎?

+0

查閱JOIN語句。 –

+0

http://sqlfiddle.com/會很方便地向我們展示您想要實現的目標 – KenD

回答

0

首先,使用主過濾條件在表。所以,你必須以
選擇 ... 從物業 ...

然後探訪連接屬性。它會產生不同的行每次訪問,與
LEFT JOIN得到探視的財產

然後,我們需要獲得可讀取客戶端名稱,沒有標識,所以我們做
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' 

乾杯!

+0

謝謝,這對我有效:D – user3084433

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

爲什麼要把最多的過濾條件,過濾器的表格屬性,**最後**?這是一個很大的速度影響。 – TPAKTOPA