在 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.dcode
与Department.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 Server 中第二个表中引用同一列的两列连接起来