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))