在SQL Server 2008中跨多个表使用SQL进行OUTER JOIN

Jav*_*per 4 outer-join sql-server-2008

我有一个SQL Server 2008数据库.该数据库有三个表:

  - Id
  - FullName
  - MembershipStatusId (nullable)
  - HairStyleId (nullable)
Run Code Online (Sandbox Code Playgroud)

MembershipStatus

  - Id
  - Name
Run Code Online (Sandbox Code Playgroud)

发型

  - Id
  - ColorName
  - Description
Run Code Online (Sandbox Code Playgroud)

我需要创建一个列出数据库中所有人的查询.因为MembershipStatusId并且HairStyleId都可以为空,我知道我需要做一个左外连接.但是,因为有多个表,我不知道该怎么做.只有一个左外连接,我知道我可以这样做:

SELECT
  p.*,
  m.Name as 'MembershipStatus',
  -- how do i include the person's hair color as part of my result set?
FROM
  Person p LEFT OUTER JOIN
    MembershipStatus m ON p.[MembershipStatusId]
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何为发型名称添加左外连接.有人可以告诉我如何包含人的头发颜色?

谢谢!

Tar*_*ryn 10

你只需要做另一个LEFT JOIN包含HairStyle表

SELECT
  p.*,
  m.Name as 'MembershipStatus',
  h.ColorName
FROM Person p 
LEFT JOIN MembershipStatus m 
    ON p.[MembershipStatusId] = m. Id
LEFT JOIN HairStyle h
    ON p.HairStyleId = h.id
Run Code Online (Sandbox Code Playgroud)

查看关于SQL Fiddle的演示