gpt4 book ai didi

sql - 我如何使用mysql连接3个表

转载 作者:行者123 更新时间:2023-11-29 02:07:24 24 4
gpt4 key购买 nike

我有以下表格:

TABLE: companies c
FIELDS: id, name, description

TABLE: departments d
FIELDS: id, name, description

TABLE employees e
FIELDS: id, company_id, department_id, name

我正在尝试获取公司 1 所有员工的列表,并将部门名称 (d.name) 获取到行的结果中。

这是我的原始查询:

SELECT e.*, c.name as company 
FROM employees e, companies c
WHERE e.company_id=c.id AND e.company_id=1;

我应该向此查询添加什么以使部门名称 (d.name) 出现在查询的每一行中?此外...在某些情况下,e.department_id 可能等于 0,因为特定公司没有部门。

感谢大家的帮助!

最佳答案

SELECT e.id, e.name, e.department_id, c.name, d.name
FROM employees AS e
LEFT JOIN departments AS d ON e.department_id = d.id
LEFT JOIN companies AS c ON e.company_id = c.id
WHERE e.company_id = 1;

通常,您可以按任何顺序混合匹配联接,只要您在联接中需要的任何列/表之前已经联接过即可。在本例中,您从两个通过员工数据关联的单独表中获取数据,并且它们都不是相互依赖的,因此您可以按任意顺序对两个 LEFT JOIN 行进行排序。

此外,使用 LEFT 联接,您可以从联接“左侧”的表(在本例中为 employees 表)中获取所有行,并从右表(companies/部门)。如果公司或部门中没有匹配的行,那么来自这些表的任何列在结果集中都将为 NULL。

关于sql - 我如何使用mysql连接3个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553363/

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