如何使用mysql连接3个表

如何使用mysql连接3个表,sql,mysql,Sql,Mysql,我有以下表格: 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 com

我有以下表格:

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、 部门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;
通常,您可以按任何顺序混合匹配联接,只要联接中所需的任何列/表以前已经联接过。在本例中,您正在从两个通过employees数据相关的独立表中提取数据,并且两个表都不是相互依赖的,因此您可以按任意顺序排列两个左连接行

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