2012-08-16 38 views
0

當我嘗試在phpmyadmin結果上訂購專欄時出現錯誤。 這是錯誤:使用JOIN對MySQL查詢進行排序

enter image description here

我的查詢是:

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

你想排序的列是? – Kermit 2012-08-16 14:20:53

+0

我想在phpmyadmin或jqgrid上選擇它時進行排序。這就是爲什麼我沒有把任何ORDER BY放在我的查詢中。 – 2012-08-16 14:33:09

+0

我相信引擎會做一個排序,無論。如果你不想要引擎排序,你需要指定一個列進行排序。 – Kermit 2012-08-16 14:35:57

回答

1

我懷疑這是錯誤的,gerated 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 

其實保換GrupoGrupoWorkaround,從而obliverating別名的需要。

+0

尤金,它工作正常,但我有一個問題,因爲我使用JQGrid,並且搜索不起作用,因爲網格確實像phpmyadmin,使運行時的訂單查詢,與Grupo.Grupo,而不是'Grupo'或Grupo.Nome。你明白了嗎? – 2012-08-16 14:30:50

+0

這是SQL生成中的一個錯誤。嘗試保留沒有別名的Grupo.Nome(=刪除「AS Grupo」部分) – 2012-08-16 14:49:13

+0

Withou別名它完美的工作,但我不能沒有他們,因爲我在所有表中都有「Nome」。這是我的問題。我試圖找到任何方法來做這個沒有別名的查詢,因爲昨天,但我還沒找到它。 – 2012-08-16 14:51:31