联接三个或更多的表 Microsoft SQL Server 2000

虽然每个联接规范只联接两个表,但 FROM 子句可包含多个联接规范。这样一个查询可以联接若干个表。

pubs 数据库的 titleauthor 表提供了一个很好的示例,该示例说明联接两个以上的表非常有用。下面的 Transact-SQL 查询可找到特定类型的所有书名及相应的作者姓名:

USE pubs

SELECT a.au_lname, a.au_fname, t.title

FROM authors a INNER JOIN titleauthor ta

   ON a.au_id = ta.au_id JOIN titles t

   ON ta.title_id = t.title_id

WHERE t.type = 'trad_cook'

ORDER BY t.title ASC

下面是结果集:

au_lname          au_fname             title      

----------------- -------------------- ---------- 

Blotchet-Halls    Reginald             Fifty Years in Buckingham Palace 

   Kitchens

Panteley          Sylvia               Onions, Leeks, and Garlic: 

   Cooking Secrets of the Mediterranean

O'Leary           Michael              Sushi, Anyone?

Gringlesby        Burt                 Sushi, Anyone?

Yokomoto          Akiko                Sushi, Anyone?



(5 row(s) affected)

注意,FROM 子句中的 titleauthor 表不会为结果提供任何列。而且联接列 au_idtitle_id 都不会出现在结果中。尽管如此,只有将 titleauthor 用作中间表,此联接才有可能实现。

由于 titleauthor 表是参与联接的其它表之间的连接中间点,因此联接的中间表(titleauthor 表)可称为转换表或中间表。

如果同一语句包含多个联接运算符,用于联接多于两个的表或联接多于两对的列,那么联接表达式可以用 AND 或 OR 连接。

你可能感兴趣的:(SQL Server 2000)