繁体   English   中英

SQL查询并返回两行合二为一

[英]SQL Query and Return Two Row into One

我有三张表:

  • POST : 职位信息
POST_ID | REPORTS_TO
--------+-----------
1       | 4
2       | 1
3       | 1
4       | NULL
  • EMPLOYEE : 记录哪个人在哪个岗位
EMPLOYEE_ID | POST_ID | PERSON_ID
------------+---------+----------
1           | 1       | 1
2           | 2       | 2
3           | 3       | 3
4           | 4       | 4
  • PERSON :关于该人的信息
PERSON_ID | NAME
----------+-----
1         | BOB
2         | JIM
3         | FRANK
7         | PHIL

我想将结果返回为:

WorkerName | SupervisorName
-----------+---------------
BOB        | PHIL
JIM        | BOB
FRANK      | BOB
PHIL       | (NULL)

我试过这个,但它只返回 7 行。 我需要组合以下按postID分组的结果,但随后我丢失了一半的值:

SELECT First_Name
FROM post
JOIN employee
  ON employee.PostID = post.Supervisor_PostID
    OR employee.PostID = post.PostID
JOIN person
  ON person.PersonID = employee.PersonID

您需要使用post s 两次加入person表:一次用于工作人员(您通过桥接表employee访问),另一个用于主管:

select pe1.name WorkerName, pe2.name SupervisorName
from post po
inner join employee em on em.post_id = po.post_id
inner join person pe1 on pe1.person_id = em.person_id
inner join person pe2 on pe2.person_id = po.reports_to

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM