0

当我尝试在 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。有谁知道如何解决这个问题?

4

1 回答 1

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并因此消除了对别名的需要。

于 2012-08-16T14:24:04.867 回答