自参考表。MySQL

自参考表。MySQL,mysql,sql,database,Mysql,Sql,Database,我还有一个问题。我似乎没有完全理解这个概念 我有一张桌子: EMPLOYEES | EMP_NO | APELLIDO | OFFICE | DIRECTOR | START_DATE | SALARY | COMMISSION | DEP_NO | 我必须获得其办公室为“主管”的员工的数据(简单,但…),并且我还必须包括一个列,该列将返回其下属的所有员工的全额工资(工资+佣金) 现在我知道我需要“复制”表格,这样我就能够使它引用自身(员工e1、员工e2等)。但我真的很激动,因为我得到了那些

我还有一个问题。我似乎没有完全理解这个概念

我有一张桌子:

EMPLOYEES

| EMP_NO | APELLIDO | OFFICE | DIRECTOR | START_DATE | SALARY | COMMISSION | DEP_NO |
我必须获得其办公室为“主管”的员工的数据(简单,但…),并且我还必须包括一个列,该列将返回其下属的所有员工的全额工资(工资+佣金)

现在我知道我需要“复制”表格,这样我就能够使它引用自身(员工e1、员工e2等)。但我真的很激动,因为我得到了那些下属的工资总额

有什么想法吗? (请帮忙)

编辑

对不起,伙计们,真的。是我的错。好的,下面是一些示例数据:

+--------+----------+------------+----------+------------+---------+----------+--------+
| EMP_NO | SURNAME  | OFFICE     | DIRECTOR | START_DATE | SALARY  |COMMISSION| DEP_NO |
+--------+----------+------------+----------+------------+---------+----------+--------+
|   7499 | ALONSO   |SALESPERSON |     7698 | 1981-02-23 | 1400.00 |   400.00 |     30 |
|   7521 | LOPEZ    | EMPLOYEE   |     7782 | 1981-05-08 | 1350.50 |     NULL |     10 |
|   7654 | MARTIN   |SALESPERSON |     7698 | 1981-09-28 | 1500.00 |  1600.00 |     30 |
|   7698 | GARRIDO  | DIRECTOR   |     7839 | 1981-05-01 | 3850.12 |     NULL |     30 |
|   7782 | MARTINEZ | DIRECTOR   |     7839 | 1981-06-09 | 2450.00 |     NULL |     10 |
|   7839 | REY      |    CEO     |     NULL | 1981-11-17 | 6000.00 |     NULL |     10 |
|   7844 | CALVO    |SALESPERSON |     7698 | 1981-09-08 | 1800.00 |     0.00 |     30 |
|   7876 | GIL      |  ANALIST   |     7782 | 1982-05-06 | 3350.00 |     NULL |     20 |
|   7900 | JIMENEZ  | EMPLOYEE   |     7782 | 1983-03-24 | 1400.00 |     NULL |     20 |
+--------+----------+------------+----------+------------+---------+----------+--------+
我现在需要做的是返回一个包含加里多和马丁内斯(EMP_NO 7698和7782)员工详细信息的表格,以及包含他们所有直接下属的总工资的附加列。诸如此类:

+--------+----------+------------+----------+------------+---------+----------+--------+-----------+
| EMP_NO | SURNAME  | OFICIO     | DIRECTOR | FECHA_ALTA | SALARIO | COMISION | DEP_NO | TOTAL_EMP |
+--------+----------+------------+----------+------------+---------+----------+--------+-----------+    
|   7698 | GARRIDO  | DIRECTOR   |     7839 | 1981-05-01 | 3850.12 |     NULL |     30 |   6700    |
|   7782 | MARTINEZ | DIRECTOR   |     7839 | 1981-06-09 | 2450.00 |     NULL |     10 |  1350.50  |
+--------+----------+------------+----------+------------+---------+----------+--------+-----------+

我相信这应该可以做到。您只需将连接到所需的其他行,然后只需分组即可获得所需的合计金额

SELECT
    D.emp_no,
    D.apellido,    -- Why is there one column named in Spanish and the rest in English?
    D.office,
    D.director,
    D.start_date,
    D.salary,
    D.commission,
    D.dep_no,
    SUM(COALESCE(S.salary, 0) + COALESCE(S.commission, 0)) AS subordinates_compensation
FROM
    Employees D
LEFT OUTER JOIN Employees S ON S.director = D.emp_no
WHERE
    D.office = 'Director'
GROUP BY
    D.emp_no,
    D.apellido,
    D.office,
    D.director,
    D.start_date,
    D.salary,
    D.commission,
    D.dep_no

发布样本数据和预期输出您是否只寻找直接下属,或者您是否需要获得其所有下属的总工资加上其所有下属的下属,等等?主管与员工的关系如何?是
主管
栏吗?主管Chin Leung也是一名员工,因此他的emp_编号被放在其下属的主管栏中。:)因为我有点草率,没有翻译那个:)谢谢,我现在只是试一下。好的。谢谢你,这确实有效。我只需要把主任的工资排除在外。:)很好,谢谢(我还没有准备好考试)。是的,如果导演的行指向自己(
director=emp\u no
),那么你可以在
JOIN
子句中添加一个条件来删除该行(
和s.emp\u no D.emp\u no