0
我試圖提取使用此查詢數據庫中的某些信息,Multi-Table Selfjoins - 有沒有一個很好的方法來做到這一點?
SELECT dbo.AfterHoursParameterSetup.Customer_id
, dbo.tblCustomer.Company
, dbo.tblDevices.device_id
, dbo.AfterHoursParameterSetup.DeviceMasterID
, dbo.tblDriverType.DriverType
, dbo.tblGroups.GroupName
, dbo.AfterHoursParameterSetup.ReportBy
, dbo.AfterHoursParameterSetup.TripTimeFilter
, dbo.AfterHoursParameterSetup.chkWeekEndTravel
, dbo.AfterHoursParameterSetup.WeekdayStart
, dbo.AfterHoursParameterSetup.WeekDayEnd
, dbo.AfterHoursParameterSetup.WeekEndFrom
, dbo.AfterHoursParameterSetup.WeekEndTo
, dbo.AfterHoursParameterSetup.ReportType
FROM dbo.AfterHoursParameterSetup
FULL JOIN dbo.tblCustomer
ON dbo.AfterHoursParameterSetup.Customer_id = dbo.tblCustomer.Customer_id
FULL JOIN dbo.tblDriverType
ON dbo.AfterHoursParameterSetup.DeviceMasterID = dbo.tblDriverType.DriverType_id
FULL JOIN dbo.tblGroups
ON dbo.AfterHoursParameterSetup.DeviceMasterID = dbo.tblGroups.Group_id
FULL JOIN dbo.tblDevices
ON dbo.AfterHoursParameterSetup.DeviceMasterID = dbo.tblDevices.device_id
ORDER BY dbo.AfterHoursParameterSetup.Customer_id ASC
有另一種方式來構建這個查詢,這樣我可以消除NULL值? dbo.AfterHoursParameterSetup.DeviceMasterID將所有內容鏈接在一起,但是該列使用來自三個不同表的值,因此,在沒有匹配值的情況下,對於在沒有匹配連接值的情況下選擇的所有其他列,將返回NULL。
一個你用這個查詢得到的結果和你想要得到的結果的例子可能會讓你的意圖更好一些。 –
使用INNER JOIN如果你不想NULL表的值爲 – hoaz
對不起,我是noob。我在查詢中得到了我想要的結果,但除了列本身(即只有dbo.tblDevices.device_id有條目的行),每列都有NULL條目的行。我認爲這是因爲dbo.AfterHoursParameterSetup.DeviceMasterID不能總是映射到相關的表。但如果我不使用FULL,則無法完成第二和第三個連接。 –