联接中的表
当组合多个表中的数据时,必须决定使用什么表。有几个重要的注意事项:
组合三个或更多表 每个 JOIN 操作均可组合两个表。但是,您可以在同一个查询内使用多个 JOIN 操作来组合来自任意多个表的数据。由于每个 JOIN 操作的结果实际上是一个表,所以可以将该结果作为操作数用在后续联接操作中。例如,若要在创建的结果集内使每行包含一个书名、一个作者以及该作者收到的该书的版税百分比,必须组合 authors、titles 和 titleauthor 这三个表中的数据。得到的 SQL 可能像下面这样:
SELECT title, au_fname, au_lname, royaltyper FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id
将某个表仅用于联接其他表 可以在联接中包括某个表,即使不想在结果集内包含该表中的任何列。例如,若要在建立的结果集内使每行描述一对书名/商店对(该商店出售此书),请包括 titles 和 stores 这两个表中的列。但是必须使用第三个表,即 sales 表,来确定哪些商店销售了哪些书。得到的 SQL 可能像下面这样:
SELECT title, stor_name FROM titles INNER JOIN sales ON titles.title_id = sales.title_id INNER JOIN stores ON sales.stor_id = stores.stor_id
注意 sales 表不对结果集分配列。
在一个查询中使用某个表两次 可以在单个查询内使用同一个表两次(或更多次)。有关更多信息,请参见在一个查询中使用某个表两次。
使用其他对象代替表 可以使用查询、视图或返回表的用户定义函数代替表。有关更多信息,请参见 如何:使用表以外的对象创建查询。
有关将表添加到查询的更多信息,请参见 如何:向查询添加表。