当我尝试在phpmyadmin结果上订购我的列时,我收到错误。 这是错误:
我的查询是:
SELECT Cliente.Codigo, Cliente.Nome, Contato.Nome, Grupo.Nome FROM Cliente JOIN Grupo ON ( Grupo.codigo = Cliente.Codigo_Grupo ) JOIN Contato ON ( Contato.Codigo_Cliente = Cliente.Codigo ) GROUP BY Cliente.Codigo ASC
当我点击列标题时,自动添加了ORDER BY。 有谁知道如何解决这个问题?
答案 0 :(得分:1)
我怀疑这是错误的SQL:尝试
SELECT Cliente.Codigo AS Codigo, Cliente.Nome, Contato.Nome AS Contato, Grupo.Nome AS Grupo
FROM Cliente
JOIN Grupo ON ( Grupo.codigo = Cliente.Codigo_Grupo )
JOIN Contato ON ( Contato.Codigo_Cliente = Cliente.Codigo )
GROUP BY Cliente.Codigo
ORDER BY `Grupo` ASC
LIMIT 0,30
在评论中讨论后,结果表明,框架中的底层错误是罪魁祸首:
- Grupo.Nome
上没有别名,它会阻塞Nome
部分
- 使用Grupo.Name
上的别名,它会阻塞别名
有一个非常非常脏的方法 - 但请注意,这是一种解决方法(充其量),而不是解决方案
这样做一次:
CREATE VIEW GrupoWorkaround SELECT Grupo.*,Grupo.Nome AS Grupo FROM Grupo
这将创建一个平行视图。
不将您的查询更改为
SELECT Cliente.Codigo AS Codigo, Cliente.Nome, Contato.Nome AS Contato, GrupoWorkaround.Grupo
FROM Cliente
JOIN GrupoWorkaround ON ( GrupoWorkaround.codigo = Cliente.Codigo_Grupo )
JOIN Contato ON ( Contato.Codigo_Cliente = Cliente.Codigo )
GROUP BY Cliente.Codigo
ORDER BY `Grupo` ASC
LIMIT 0,30
实际上用Grupo
替换GrupoWorkaround
,从而无需使用别名。