在 SQL Server 中连接两个表

Posted

技术标签:

【中文标题】在 SQL Server 中连接两个表【英文标题】:Joining two tables in SQL Server 【发布时间】:2013-12-10 13:59:09 【问题描述】:

我有两张桌子。一个叫员工,另一个叫部门

这是两张表:

CREATE TABLE Departmenr (
    department_code NCHAR(4),
    department_name NVARCHAR(15),
    city NVARCHAR(20),
    budget MONEY
)

CREATE TABLE Employee (
    employee_id NCHAR(6), 
    name NVARCHAR(20), 
    position NVARCHAR(20),
    salary MONEY, 
    dcode NCHAR(3),
)

我必须为所有工资超过 20,000 英镑的员工写一份声明,列出每位员工的姓名和他们所在部门的名称。 这意味着我必须加入 Employee 和 Department 表才能获得输出。

我认为可能是这样的:

SELECT Emplyee.name, Department.department_name
FROM Employee
FULL OUTER JOIN Department 
ON Employee.salary > 20000;

但它有错误。 我该怎么做?

【问题讨论】:

员工中的 dcode 是部门的外键吗? 您的联接似乎没有将两个表相互关联。您的联接需要将一个表中的列值与另一个表中的列值关联起来。 要加入两个以上的表,您需要在两个表中都有相互关联的字段,例如employee 表中的“department_code”字段,它是 departmentnr 表的外键。 如果Employee.dcodeDepartment.department_code 相关,那么 (a) 为什么它们不具有相同的名称?通过缩写一个而不是另一个,除了无缘无故的额外歧义之外,你能得到什么? (b) 为什么它们有不同的类型? 【参考方案1】:

假设dcode 是表部门的外键,您可以这样做:

SELECT e.NAME,d.department_name
FROM Employee e
INNER JOIN Department d ON e.dcode = d.department_code
WHERE e.salary > 20000;

【讨论】:

你忘记了部门的别名

以上是关于在 SQL Server 中连接两个表的主要内容,如果未能解决你的问题,请参考以下文章

如何连接两个等效表,它们是 SQL Server 中先前递归选择的结果

sql sever将两个表合起来语法

如何将两个表与 SQL Server 中第二个表中引用同一列的两列连接起来

如何在 SQL Server 中同时连接两个数据库?

SQL server 两个查询结果拼接成一个,语句改怎样修改?

SQL Server - 连接表,使多行变成一行