【问题标题】:MYSQL joins and then making queries on the joined tableMYSQL 连接,然后对连接的表进行查询
【发布时间】:2021-09-26 16:56:51
【问题描述】:

我正在尝试对一个数据库和后续查询进行连接,在这个数据库中,它是一个来自 MYSQL 的虚拟数据库,你有这些表

 +----------------------+
    | Tables_in_employees  |
    +----------------------+
    | current_dept_emp     |
    | departments          |
    | dept_emp             |
    | dept_emp_latest_date |
    | dept_manager         |
    | employees            |
    | salaries             |
    | titles               |
    +----------------------

在薪水表中我有类似的东西

| emp_no | salary | from_date  | to_date    |
+--------+--------+------------+------------+
|  10001 |  60117 | 1986-06-26 | 1987-06-26 |
|  10001 |  62102 | 1987-06-26 | 1988-06-25 |
|  10001 |  66074 | 1988-06-25 | 1989-06-25 |
|  10001 |  66596 | 1989-06-25 | 1990-06-25 |
|  10001 |  66961 | 1990-06-25 | 1991-06-25 |

所以我试图对薪水求和并按员工编号对结果进行分组,因此每个数字只有一个值,因此该行可用于与员工表的联接,以便我可以对联接表进行查询,但是我不能加入,我正在尝试做这样的事情:

SELECT salary, salaries.emp_no FROM salaries INNER JOIN employees ON salaries.emp_no = employees.emp_no -----> This ONE JUST THROWS THE FIREST TWO COLUMNS FROM SALARIES


 SELECT emp_no, SUM(salary) as total_pay FROM salaries GROUP BY emp_no INNER JOIN employees ON employees.emp_no = salaries.emp_no; ------> THIS ONE TELLS ME I HAQVE A SYNTAX ERROR

所以我可以通过聊天来弄清楚这个任务吗?谢谢

【问题讨论】:

    标签: mysql sql join inner-join


    【解决方案1】:

    假设您只需要员工的总工资,您甚至不需要employees 表:

    SELECT s.emp_no, SUM(s.salary) as total_pay
    FROM salaries s
    GROUP BY s.emp_no ;
    

    我希望您在某个日期之前想要它:

    SELECT s.emp_no, SUM(s.salary) as total_pay
    FROM salaries s
    WHERE start_date <= '1990-01-01' and
          end_date > '1990-01-01'
    GROUP BY s.emp_no ;
    

    【讨论】:

    • 谢谢,我想要这些名字,因为我想得到薪水超过一定数额的员工的名字和头衔,尽管这有助于我更好地理解加入!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2020-05-13
    • 2021-02-11
    • 2012-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多