最初,讓我描述一下我希望查詢返回的內容。我希望此查詢返回AddressType表中AddressTypeLookupID爲3或5的所有記錄,這是AddressType表中設置的。其次,作爲進一步的限制,這還必須僅包括具有IndustryTypeID = 56的公司,該公司在IndustryType表中設置。 Address,AddressType和IndustryType表中的所有記錄都按ID鏈接。SQL查詢根據3個不同的表執行INNER JOIN
SELECT B.AddressTypeLookupID, A.Address1, A.Address2, A.City, A.State, A.Zip, A.ID
FROM Company.dbo.Address A
INNER JOIN Company.dbo.AddressType B ON A.AddressID = B.AddressID
WHERE B.Status = 'Active' AND
B.AddressTypeLookupID = 3 AND
A.AddressID = (SELECT MAX(Z.AddressID)
FROM Company.dbo.Address Z
INNER JOIN Company.dbo.AddressType X ON Z.AddressID = X.AddressID
WHERE B.Status = 'Active'
AND B.AddressTypeLookupID = 3
AND Z.ID = A.ID
)
INNER JOIN COMPANY.dbo.IndustryTypeCompanyName g ON g.ID = A.ID
WHERE g.IndustryTypeID = 56
UNION ALL
SELECT B.AddressTypeLookupID, A.Address1, A.Address2, A.City, A.State, A.Zip, A.ID
FROM Company.dbo.Address A
INNER JOIN Company.dbo.AddressType B ON A.AddressID = B.AddressID
WHERE B.Status = 'Active' AND
B.AddressTypeLookupID = 5 AND
A.AddressID = (SELECT MAX(Z.AddressID)
FROM Company.dbo.Address Z
INNER JOIN Company.dbo.AddressType X ON Z.AddressID = X.AddressID
WHERE B.Status = 'Active' AND
B.AddressTypeLookupID = 5 AND
Z.ID = A.ID
)
INNER JOIN COMPANY.dbo.IndustryTypeCompanyName j ON j.ID = A.ID
WHERE j.IndustryTypeID = 56
我的問題是,我相信,隨着內部聯接稱爲「G」和上述「J」,在那裏我嘗試IndustryTypeID = 56
限制查詢。查詢正常工作(根據需要)沒有這些行。我只是無法將IndustryTypeID
的(完整)查詢限制爲56.我無論在邏輯上是錯誤的,或者我根本就不理解SQL語法。我使用的是Microsoft SQL Management Studio中2008
什麼是不工作?你沒有得到當前查詢的行嗎?您確定有任何地址的IndustryTypeId爲56嗎? – Vulcronos
對不起,應該提到:我實際上得到一個語法錯誤:「INNER附近的語法錯誤」。有幫助,不是嗎。但是我們知道它來自'g'或'j'連接子句,因爲它沒有這些條件就可以正常工作。 – Musicode
刪除該子查詢以確定會嚴重影響性能的「AddressID」。只是聲明一個變量Set @variable =「query」,然後'A.AddressID = @ variable' – CSharper