2013-08-05 4 views
1

у меня есть две таблицы для хранения адресов следующим образом: enter image description hereДва соединения между двумя таблицами

Я хочу, чтобы каждый адрес, город, имя и название области (CityId, Areaid может быть нулевой)

Я пробовал:

SELECT [Details] 
     ,[AddressId] 
     ,[CityId] 
     ,[PlaceName] as CityName 
     ,[AreaId] 
     ,[PlaceName] as AreaName 
    FROM [MyDB].[dbo].[Address] LEFT OUTER JOIN [MyDB].[dbo].[Places] 
    ON [CityId] = [PlaceI] 

но это даст мне только названия города. Как получить название области?

ответ

3

Вам необходимо дважды присоединиться к таблице мест. Однажды для городов и один раз для Районов.

SELECT [Details] 
     ,[AddressId] 
     ,[CityId] 
     ,C.[PlaceName] as CityName 
     ,[AreaId] 
     ,A.[PlaceName] as AreaName 
FROM [MyDB].[dbo].[Address] 
    LEFT OUTER JOIN [MyDB].[dbo].[Places] C 
     ON [CityId] = C.[PlaceI] 
    LEFT OUTER JOIN [MyDB].[dbo].[Places] A 
     ON [AreaId] = A.[PlaceI] 
3

Добавить другой присоединиться

SELECT [Details] 
     ,[AddressId] 
     ,[CityId] 
     ,p1.[PlaceName] as CityName 
     ,[AreaId] 
     ,p2.[PlaceName] as AreaName 
    FROM [MyDB].[dbo].[Address] 
    LEFT OUTER JOIN [MyDB].[dbo].[Places] p1 ON [CityId] = p1.[PlaceId] 
    LEFT OUTER JOIN [MyDB].[dbo].[Places] p2 ON [AreaId] = p2.[PlaceId] 
+3

У вас есть то же самое условие соединения дважды. Нужно присоединиться к 'AreaId' –

+0

Конечно. Спасибо. –

0

Try This

SELECT [Details] 
     ,[AddressId] 
     ,[CityId] 
     ,C.[PlaceName] as CityName 
     ,[AreaId] 
     ,A.[PlaceName] as AreaName 
FROM [MyDB].[dbo].[Address] 
    INNER JOIN [MyDB].[dbo].[Places] C 
    ON ([CityId] = [PlaceID] AND IsCity=1) 
    OR ([AreaId] = [PlaceID] AND IsCity=0) 
0

будет добавлять еще один присоединиться к той же таблице ... на этот раз, соединяющую для работы ид области? (другие ответы упали в так не добавляя запрос)

вы можете добавить еще один столбец, в места, чтобы присоединиться к области идентификатора или понижаться в третий стол, чтобы избавиться от многих ко многим отношений, если это возможно

Смежные вопросы