多个联接表的SQL查询
我正在查询一个SQL Server数据库,我一直在努力获得我想要的结果集。我觉得这是可能的,但我就是做不到。下面是DB的布局方式多个联接表的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
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