首页 > 解决方案 > WHERE 在三重 INNER JOIN 中

问题描述

我正在尝试查找 empresas.id = (a number); 的所有值

这是我的查询:

SELECT empresas.nome, departamentos.nomeDepartamento, 
funcionarios.nomeFuncionario, funcionarios.email, funcionarios.idFuncionario FROM empresas 
INNER JOIN departamentos ON empresas.id = departamentos.idEmpresas 
INNER JOIN funcionarios ON departamentos.id = funcionarios.idDepartamentos 
ORDER BY empresas.nome ASC;

我试图把 WHERE 放在最后,就在 ASC 之后:

...ORDER BY empresas.nome ASC WHERE id.empresas = 2;

我的尝试都没有奏效。

表:

CREATE TABLE `departamentos` (
  `id` int(11) NOT NULL,
  `idEmpresas` int(11) DEFAULT NULL,
  `nomeDepartamento` varchar(30) DEFAULT NULL
)


CREATE TABLE `empresas` (
  `id` int(11) NOT NULL,
  `nome` varchar(30) DEFAULT NULL
)
CREATE TABLE `funcionarios` (
  `idFuncionarios` int(11) NOT NULL,
  `idDepartamentos` int(11) DEFAULT NULL,
  `nomeFuncionario` varchar(30) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `senha` varchar(30) DEFAULT NULL
)

我想做的是加入这些表以返回 empresas.nome、departamentos.nomeDepartamento、funcionarios.nomeFuncionario、funcionarios.email、funcionarios.idFuncionario,然后由 empresas 选择。

感谢您的帮助!

标签: mysqlsql

解决方案


SELECT empresas.nome, departamentos.nomeDepartamento, 
funcionarios.nomeFuncionario, funcionarios.email, funcionarios.idFuncionario FROM empresas 
INNER JOIN departamentos ON empresas.id = departamentos.idEmpresas 
INNER JOIN funcionarios ON departamentos.id = funcionarios.idDepartamentos 
WHERE empreas.id = 2 /* <=== The line to add */
ORDER BY empresas.nome ASC;

推荐阅读