Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个联接表的SQL查询_Sql_Sql Server - Fatal编程技术网

多个联接表的SQL查询

多个联接表的SQL查询,sql,sql-server,Sql,Sql Server,我正在查询一个SQL Server数据库,我一直在努力获得我想要的结果集。我觉得这是可能的,但我就是做不到。下面是DB的布局方式 City Table: CityID CityName StateID ------ -------- ------- 1 Fairfax 1 2 Richmond 1 3 Roanoke 1 State Tab

我正在查询一个SQL Server数据库,我一直在努力获得我想要的结果集。我觉得这是可能的,但我就是做不到。下面是DB的布局方式

City Table: 
CityID       CityName       StateID
------       --------       -------
1            Fairfax        1
2            Richmond       1
3            Roanoke        1

State Table: 
StateID      StateName      StateShortName
-------      ---------      --------------
1            Virginia       VA

Score Table: 
CityID       StateID        Score
------       -------        -----
1            1              50
3            1              100
我想返回一个如下所示的结果集:

CityID       CityName       StateID        StateName     StateShortName    Score
------       --------       -------        ---------     --------------    -----
1            Fairfax        1              Virginia      VA                50
2            Richmond       1              Virginia      VA                NULL
3            Roanoke        1              Virginia      VA                100
我尝试使用的失败:

我也尝试了一些失败的方法:


任何帮助都将不胜感激

您应该使用城市ai主表和分数表上的左连接

    SELECT C.CityID, 
        C.CityName, 
        S.StateID, 
        S.StateName, 
        S.StateShortName, 
        CASE 
            WHEN SC.Score = NULL 
            THEN NULL
            ELSE SC.Score
        END AS Score
    FROM City Score SC WITH (NOLOCK)
    INNER JOIN State S WITH (NOLOCK) ON SC.StateID = S.StateID
    LEFT  JOIN Score C WITH (NOLOCK) ON SC.CityID = C.CityID
    
    

你们应该使用城市ai主表和分数表上的左连接

    SELECT C.CityID, 
        C.CityName, 
        S.StateID, 
        S.StateName, 
        S.StateShortName, 
        CASE 
            WHEN SC.Score = NULL 
            THEN NULL
            ELSE SC.Score
        END AS Score
    FROM City Score SC WITH (NOLOCK)
    INNER JOIN State S WITH (NOLOCK) ON SC.StateID = S.StateID
    LEFT  JOIN Score C WITH (NOLOCK) ON SC.CityID = C.CityID
    
    

您需要
LEFT JOIN
Score表:

选择C.CityID,
C.CityName,
S.StateID,
美国州名,
S.StateShortName,
理学士成绩
来自C市
S.StateID=C.StateID上的内部连接状态S
SC.StateID=S.StateID和SC.CityID=C.CityID上的左连接分数SC;

您需要
左键加入得分表:

选择C.CityID,
C.CityName,
S.StateID,
美国州名,
S.StateShortName,
理学士成绩
来自C市
S.StateID=C.StateID上的内部连接状态S
SC.StateID=S.StateID和SC.CityID=C.CityID上的左连接分数SC;

请为测试数据编写insert和create语句。请为测试数据编写insert和create语句。
    SELECT C.CityID, 
        C.CityName, 
        S.StateID, 
        S.StateName, 
        S.StateShortName, 
        CASE 
            WHEN SC.Score = NULL 
            THEN NULL
            ELSE SC.Score
        END AS Score
    FROM City Score SC WITH (NOLOCK)
    INNER JOIN State S WITH (NOLOCK) ON SC.StateID = S.StateID
    LEFT  JOIN Score C WITH (NOLOCK) ON SC.CityID = C.CityID