MySQL 带别名的内部联接
MySQL inner join w/ alias
所以这是我的 table DENUNCIAS
id_denuncia,
id_categoria,
id_fecha,
email_denunciante -- FK table usuarios,
email_denunciado -- FK table usuarios,
descripcion,
fecha
如您所见,我对同一个 table.
有双重引用
我想做的是 select (内部联接) 'usuarios.nombreCompleto' 两次,一次用于 'email_denunciante' ,另一次用于 'email_denunciado' 。这是我到目前为止的位置:
select
categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuarios.nombreCompleto as usuDenunciante,
usuarios.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias
inner join categorias on denuncias.id_categoria = categorias.id_categoria
inner join fechas on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante on denuncias.email_denunciante = usuarios.email
inner join usuarios as usuDenunciado on denuncias.email_denunciado = usuarios.email;
这是我得到的错误:
Error Code: 1054. Unknown column 'usuarios.nombreCompleto' in 'field list'
我尝试了几种方法,但都没有结果。
由于这是一个语法错误,而不是逻辑错误,我决定不翻译代码。
提前致谢!
您创建 table 别名,然后必须在您的 select 列表中使用。 usuarios
必须是 usuDenunciante
或 usuDenunciado
。
试试这个:
select categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuDenunciante.nombreCompleto as usuDenunciante,
usuDenunciado.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias
inner join categorias
on denuncias.id_categoria = categorias.id_categoria
inner join fechas
on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante
on denuncias.email_denunciante = usuDenunciante.email
inner join usuarios as usuDenunciado
on denuncias.email_denunciado = usuDenunciado.email;
我假设您的常用 table 确实包含 nombreCompleto 列。如果这是正确的,我认为问题是,您直接引用了 usarious table 而不是使用您创建的别名。因为您访问了 table 两次,所以您需要指定 SELECT 来自的别名。
外汇:
SELECT categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuDenunciante.nombreCompleto.as usuDenunciante,
usuDenunciado.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias inner join categorias on denuncias.id_categoria = categorias.id_categoria
inner join fechas on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante on denuncias.email_denunciante = usuarios.email
inner join usuarios as usuDenunciado on denuncias.email_denunciado = usuarios.email;
所以这是我的 table DENUNCIAS
id_denuncia,
id_categoria,
id_fecha,
email_denunciante -- FK table usuarios,
email_denunciado -- FK table usuarios,
descripcion,
fecha
如您所见,我对同一个 table.
有双重引用我想做的是 select (内部联接) 'usuarios.nombreCompleto' 两次,一次用于 'email_denunciante' ,另一次用于 'email_denunciado' 。这是我到目前为止的位置:
select
categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuarios.nombreCompleto as usuDenunciante,
usuarios.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias
inner join categorias on denuncias.id_categoria = categorias.id_categoria
inner join fechas on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante on denuncias.email_denunciante = usuarios.email
inner join usuarios as usuDenunciado on denuncias.email_denunciado = usuarios.email;
这是我得到的错误:
Error Code: 1054. Unknown column 'usuarios.nombreCompleto' in 'field list'
我尝试了几种方法,但都没有结果。
由于这是一个语法错误,而不是逻辑错误,我决定不翻译代码。
提前致谢!
您创建 table 别名,然后必须在您的 select 列表中使用。 usuarios
必须是 usuDenunciante
或 usuDenunciado
。
试试这个:
select categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuDenunciante.nombreCompleto as usuDenunciante,
usuDenunciado.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias
inner join categorias
on denuncias.id_categoria = categorias.id_categoria
inner join fechas
on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante
on denuncias.email_denunciante = usuDenunciante.email
inner join usuarios as usuDenunciado
on denuncias.email_denunciado = usuDenunciado.email;
我假设您的常用 table 确实包含 nombreCompleto 列。如果这是正确的,我认为问题是,您直接引用了 usarious table 而不是使用您创建的别名。因为您访问了 table 两次,所以您需要指定 SELECT 来自的别名。
外汇:
SELECT categorias.nombreCorto as 'Categoria',
fechas.circuito as 'Fecha',
usuDenunciante.nombreCompleto.as usuDenunciante,
usuDenunciado.nombreCompleto as usuDenunciado,
denuncias.descripcion as 'Detalle',
denuncias.fecha as 'Enviada el'
from denuncias inner join categorias on denuncias.id_categoria = categorias.id_categoria
inner join fechas on denuncias.id_fecha = fechas.id_fecha
inner join usuarios as usuDenunciante on denuncias.email_denunciante = usuarios.email
inner join usuarios as usuDenunciado on denuncias.email_denunciado = usuarios.email;