何时使用JOIN

时间:2010-04-10 06:08:07

标签: sql join

在我看来,有两种情况可以使用JOIN:

  1. 当数据以其他方式重复时
  2. 来自一个查询的数据否则将用于另一个查询
  3. 这些情况对吗?是否还有其他使用JOIN的方案?

    编辑:我想我错误传达了。我理解如何一个JOIN工作,我不太确定何时使用一个。

3 个答案:

答案 0 :(得分:7)

JOINS用于 JOIN 表以及相关信息。

典型的情况是你可以说

用户具有特定安全设置的用户表。将使用连接,以便您可以确定用户具有哪些设置。

Users
-UserID
-UserName

UserSecurityRoles
-UserID
-SecurityRoleID

SecurityRoles
-SecurityRoleID
-SecurityRole

SELECT *
FROM Users u INNER JOIN
UserSecurityRoles usr ON u.UserID = usr.UserID INNER JOIN
SecurityRoles sr ON usr.SecurityRoleID = sr.SecurityRoleID
WHERE sr.SecurityRole = 'Admin'

LEFT联接将用于您希望从左侧表格中检索所有数据的情况,以及仅从右侧匹配的数据。

在开始规范表结构时使用JOINS。您可以在列上创建一个包含100个表的表,其中许多数据可能为NULL,或者您可以规范化表,这样可以避免使用包含空值的过多列,从而将适当的数据分组到表结构中。

Question的答案有一个非常良好的链接,其中包含使用JOIN的图形显示

答案 1 :(得分:3)

JOINS用于返回关系数据库中相关的数据。数据可以通过3种方式相关

  • 一对多关系(A 可以有多个交易
  • 多对多关系(A 医生可以有很多患者,但患者可以有多个医生
  • 一对一关系(一个只能有一个 Passport 号码)

JOINS有各种风格:

  • ANNER JOIN将返回两个表中的数据,其中每个表中的键匹配
  • LEFT JOIN或RIGHT JOIN将返回一个表中的所有行并匹配来自另一个表的数据
  • CROSS JOIN将返回每张表的产品

答案 2 :(得分:1)

当您需要来自多个表的信息时,可以使用联接:)