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

これには非常に汚い方法がありますが、これは (せいぜい) 回避策であり、解決策ではないことに注意してください。

これを 1 回実行します。

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

実際、エイリアスGrupoGrupoWorkaround置き換えることで、エイリアスの必要性をなくします。

于 2012-08-16T14:24:04.867 に答える