2012-09-15 142 views
0

有人可以告訴我這段代碼有什麼問題。 基本上我試圖做的是根據他們的ID而不是名字來識別出租人(如果有更多的租客有同名的話)。謝謝查詢限制

SELECT DISTINCT P.PROPERTYId, P.PROPERTYName, T.TYPEName 
FROM RENTAL R, PROPERTY P, TYPE T 
Group by P.PROPERTYId, P.PROPERTYName, T.TYPEName 
HAVING RENTERId = (SELECT RENTERId FROM RENTER 
WHERE RENTERFirstName = 'AL' 
AND RENTERLastName = 'SMITH') 
AND R.PROPERTYId = P.PROPERTYId 
AND P.TYPEId = T.TYPEId 
AND T.TYPEName = 'VILLA'; 
+0

請提供一些示例輸出或錯誤消息。 –

+0

雞蛋裏挑骨頭 - 我寧願看到正確的內部連接,而不是交叉連接是降低了'WHERE'條款。 – Oded

回答

2

試試這個。

SELECT DISTINCT 
    Renter.RenterID, 
    Property.PropertyId, 
    Property.PropertyName, 
    Type.TYPEName 
FROM Rental 
    inner join Property on Rental.PropertyID = Property.PropertyID 
    inner join Type on Property.TypeID = Type.TypeID 
    inner join Renter on Rental.RenterID = Renter.RenterID 
where Type.TypeName = 'villa' 
and Renter.RenterFirstName = 'al' 
and Renter.RenterLastName = 'smith' 

注意表如何使用join語法相連,且where子句被保留用於過濾。

+0

您似乎已經刪除了「GROUP BY」。 – Oded

+0

是的。有沒有聚集,因此不同的將工作一樣好 – podiluska

+0

感謝podiluska,但我不認爲查詢將正常工作,我仍然會去有一個以上的承租人具有相同的名稱,如果therr是,這就是爲什麼我在包括承租人ID任何 –

0

試試吧。替換= IN。