gpt4 book ai didi

MySQL 连接并从多个表中选择

转载 作者:行者123 更新时间:2023-11-29 04:35:42 25 4
gpt4 key购买 nike

我正在使用 MySQL Workbench,我有以下问题:

使用员工数据,创建将提供以下信息的选择查询:显示员工列表以及他们所在的部门

  • 列:员工姓名、部门名称

我有两个语句提供完全相同的返回值,但它有 1000 行!我是否正确地执行了此“加入”?

SELECT 
departments.dept_name, employees.last_name, employees.first_name
FROM
departments, employees
WHERE
departments.dept_name = employees.departments.dept_name;

SELECT
dept_name, last_name, first_name
FROM
departments
INNER JOIN
employees
ON
departments.dept_name = employees.departments.dept_name;

最佳答案

表员工和部门总是多对多。因此,我们需要它们之间的输入表,其中有列 id_emp 和 id_dep 或更常见的 4 列,id_emp,id_dep,from,to。之后,你的问题就清楚了,我们可以谈谈。

例子:表格:

employees                     emp_dep                     departments
id_emp first_name id id_emp id_dep id_dep name
1 John 1 1 1 1 Finacial
2 Elsa 2 2 2 2 Human res

注意:emp_dep 表中的id_emp 和id_dep 不能同时作为主键,因为每个员工都可以在同一个部门多次工作。

查询3张表:

SELECT  e.first_name, 
d.name
FROM (employees e
INNER JOIN emp_dep ed ON e.id_emp = ed.id_emp)
INNER JOIN departments d ON ed.id_dep = d.id_dep;

输出:

first_name     name
John Financial
Elsa Human res

创建数据库和表的SQL:

CREATE DATABASE employees_dep;
CREATE TABLE employees (id_emp INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(10));
CREATE TABLE departments (id_dep INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(10));
CREATE TABLE emp_dep (id int AUTO_INCREMENT PRIMARY KEY, id_emp INT, id_dep INT);

关于MySQL 连接并从多个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42599802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com