Перекрестное соединение Sql Query - PullRequest
0 голосов
/ 02 марта 2012
    CREATE TABLE [dbo].[Country](
        [Id] [int] NOT NULL,
        [name] [varchar](50) NULL)

    CREATE TABLE [dbo].[State](
        [Id] [int] NOT NULL,
        [name] [varchar](50) NULL,
             [CountryId] [int] NULL references Country(Id))

    CREATE TABLE [dbo].[City](
        [Id] [int] NOT NULL,
        [name] [varchar](50) NULL,
             [StateId] [int] NULL references State(Id))

Value in table 

Страна

-------
1 USA
2 UK

Государство

-----
1 NY 1
2 NSW NULL

Город

-----
1 Sydney 2
2 Mumbai NULL
3 Delhi 1

Теперь я хочу получить список City.Name, State.Name, Country.Name со значением NULL.

например, Sydney NSW NULL Дели, Нью-Йорк, США Избегайте повторяющихся записей

Я пробую этот запрос, но в нем есть какая-то ошибка:

SELECT        Country.name, City.Name AS Expr1, State.Name AS Expr2
FROM            City CROSS JOIN
                         State CROSS JOIN
                         Country
WHERE        (City.StateId IN
                             (SELECT        StateId
                               FROM            City AS City_1)) OR
                         (State.CountryId IN
                             (SELECT        CountryId
                               FROM            State AS State_1))

1 Ответ

2 голосов
/ 02 марта 2012
SELECT        C2.name, C.Name AS Expr1, S.Name AS Expr2
FROM            City c 
LEFT OUTER  JOIN State s ON c.stateid = s.id
LEFT OUTER  JOIN Country c2 on s.countryId = c2.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...