2012-03-02 5 views
-3
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 

クロスSQLクエリ

------- 
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値もあります。

例えばシドニーNSW NULL デリーNY USA 避けレコード複製

私はそれで、このクエリしかし、いくつかミスをしてみてください:

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

@MartinSmith:それは私にNULL値を示していません。 –

+0

インタビューで私に質問するのが正しいかどうか分かりません。 –

+0

を入力してください。市CROSS FROM –

答えて

2
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 
+0

こんにちはRs:それは正しく働いていません。私のクエリを変更してくださいそれを見てください –