我需要查詢數據庫中的3個表。 表客戶端包括客戶端ID號。和客戶名稱。 表格屬性包含屬性ID號。和其他物業名稱。 表clientsInterestedInProperties包括客戶端ID號。 property id no。和訪問財產的日期。SQL查詢數據庫中的多個表
我想列出對特定房產(名稱,不是身份證號碼)感興趣的客戶名稱以及他們訪問該房產的日期。
舉個例子,說這個房產叫做Barker Hall,他對此感興趣,他們什麼時候去拜訪?
任何人都可以幫忙嗎?
我需要查詢數據庫中的3個表。 表客戶端包括客戶端ID號。和客戶名稱。 表格屬性包含屬性ID號。和其他物業名稱。 表clientsInterestedInProperties包括客戶端ID號。 property id no。和訪問財產的日期。SQL查詢數據庫中的多個表
我想列出對特定房產(名稱,不是身份證號碼)感興趣的客戶名稱以及他們訪問該房產的日期。
舉個例子,說這個房產叫做Barker Hall,他對此感興趣,他們什麼時候去拜訪?
任何人都可以幫忙嗎?
首先,使用主過濾條件在從表。所以,你必須以
選擇 ... 從物業 ...
然後探訪連接屬性。它會產生不同的行每次訪問,與
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'
乾杯!
謝謝,這對我有效:D – user3084433
你需要的是一個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)
爲什麼要把最多的過濾條件,過濾器的表格屬性,**最後**?這是一個很大的速度影響。 – TPAKTOPA
查閱JOIN語句。 –
http://sqlfiddle.com/會很方便地向我們展示您想要實現的目標 – KenD