首页  >  问答  >  正文

从第一个表中提取数据,使用第二个表中的数据

首先,我找不到合适的问题名称,如果有人能找到更好的名称,如果他们编辑,我将非常感激。我是SQL的新手,我有以下问题:我有两个表如下

Member -> Name,UID(主键),SupervisorUID。 WorkPlace -> WP_UID(主键),Name,SupervisorUID。

我需要创建一个查询,返回在WorkPlace 'X'中工作的成员的姓名以及他们的上级的姓名。

我尝试使用内连接,但我无法实现我想要的结果。主要问题是,我如何通过WorkPlace名称选择,并获取成员姓名和上级姓名。

上级也是一个成员,所以,WorkPlace.SupervisorUID应该与Member.UID匹配

SELECT Member.Name, Y
INNER JOIN WorkPlace on WorkPlace.SupervisorUID = Member.UID
WHERE WorkPlace.Name = 'France'

我需要找到在Y上放什么。

我需要找到如何通过从工作场所获取uid,然后进入成员表,找到与该主管uid匹配的uid并获取姓名的方法。

Member
Jeremy 123 421
Jack 421 421
WorkPlace
1 France 421

我想返回以下表格,

Jeremy Jack

P粉885035114P粉885035114406 天前417

全部回复(1)我来回复

  • P粉071626364

    P粉0716263642023-09-11 10:50:30

    我认为你需要在Member中添加WP_UID作为一列。我不确定mysql的语法是否相同,但是如果你在Member中添加WP_UID,以下代码在MS SQL Server中可以工作:

    SELECT M1.Name, M2.Name
      FROM Member AS M1
      INNER JOIN WorkPlace AS WP on WP.WP_UID = M1.WP_UID
      INNER JOIN Member AS M2 on M2.UID = M1.SupervisorUID
      WHERE WP.Name = 'France' AND M1.UID <> M1.SupervisorUID

    我添加了M1.UID<>M1.SupervisorUID以便不显示主管。

    你也可以从Member中删除SupervisorUID并使用以下代码:

    SELECT M1.Name, M2.Name
      FROM Member AS M1
      INNER JOIN WorkPlace AS WP on WP.WP_UID = M1.WP_UID
      INNER JOIN Member AS M2 on M2.UID = WP.SupervisorUID
      WHERE WP.Name = 'France' AND M1.UID <> WP.SupervisorUID

    回复
    0
  • 取消回复