SQL连接列上的两个表
有两张表:部门和员工 部门:SQL连接列上的两个表,sql,database,Sql,Database,有两张表:部门和员工 部门: DID DName PhoneExt ADM Administration 100 CLT Client Services 101 DAT Data Conversion 102 EMPLOYEE EID EName Salary MID DID e001 Martin 57000 CLT e002 West 39000 e001 CLT e003 Wilson 64000 DAT
DID DName PhoneExt
ADM Administration 100
CLT Client Services 101
DAT Data Conversion 102
EMPLOYEE
EID EName Salary MID DID
e001 Martin 57000 CLT
e002 West 39000 e001 CLT
e003 Wilson 64000 DAT
e004 Patel 48000 e003 DAT
e005 Rae 42000 e001 CLT
e006 Jones 36000 e003 DAT
e007 Dunn 52000 e003 PRG
(SELECT EID FROM EMPLOYEE WHERE DID = 'CLT')
如何列出经理来自客户的员工的姓名和ID
服务部门?列出姓名和ID:
SELECT EName, EID
在这些雇员中:
FROM EMPLOYEE
其经理来自:
WHERE MID IN
客户服务部:
DID DName PhoneExt
ADM Administration 100
CLT Client Services 101
DAT Data Conversion 102
EMPLOYEE
EID EName Salary MID DID
e001 Martin 57000 CLT
e002 West 39000 e001 CLT
e003 Wilson 64000 DAT
e004 Patel 48000 e003 DAT
e005 Rae 42000 e001 CLT
e006 Jones 36000 e003 DAT
e007 Dunn 52000 e003 PRG
(SELECT EID FROM EMPLOYEE WHERE DID = 'CLT')
您可以使用以下查询:
SELECT EID, EName FROM EMPLOYEE WHERE MID IN (SELECT EID FROM EMPLOYEE WHERE DID = 'CLT')
正如Dour、Mohamed、Rafa等人所建议的那样,使用子查询是很好的,但是,通过自连接employee表,您可以在没有子查询的情况下更有效地执行此操作:
SELECT
emp.Ename,
emp.EID
FROM
EMPLOYEE emp
INNER JOIN EMPLOYEE mngr
ON emp.MID = mngr.EID
WHERE
mngr.DID = 'CLT'
注意-实际上根本不需要使用department表…客户服务在CLT上有一个DID。选择*from employee where DID='CLT'将起作用。如果您想使用完整的DName,那么您需要一个内部连接。非常基本的SQL,请先尝试一下,如果您仍然有问题,请发布您的尝试,我们很乐意帮助您更详细地解释问题。您的输出应该是什么样的。当您使用良好的语法并以易于阅读的方式格式化数据时,溢出程序总是喜欢这样做!: