2015-11-26 144 views
1
select t1.tema, 
    count(p.id_pregunta) as num_preguntas 
from preguntas p 
right join subtema s on p.id_subtema = s.id_subtema 
join tema t on t.id_tema = s.id_tema 
union 
select t1.tema, 
    count(r1.id_respuesta) as preg_respuesta 
from respuestas r1 
right join preguntas p1 on r1.id_pregunta = p1.id_pregunta 
right join subtema s1 on p1.id_subtema = s1.id_subtema 
right join tema t1 on t1.id_tema = s1.id_tema 
group by t1.tema 
order by preg_respuesta desc 

此查詢有什麼問題? '以條款'」未知列 'preg_respuesta'UNION查詢的Mysql錯誤

請幫我 -

錯誤#1054:我得到這個。

+0

你可以寫出如何輸出應該看起來像? – Slasko

回答

3

A SELECT ... UNION從第一個查詢中獲取其列名。嘗試

... ORDER BY num_preguntas DESC 

.... ORDER BY 2 DESC 

(因爲你在結果中第二列進行排序。)

+0

它的作品謝謝! –

1

我覺得問題在別名計數列。在第一個查詢中,您將其命名爲num_preguntas,第二個preg_respuesta的結果爲:此列中的名稱來自第一個查詢num_preguntas

變化orger by preg_respuesta descorger by num_preguntas desc

0

這是走樣的問題...把在列preg_respuesta屬於表別名。

例:IFpreg_respuesta列屬於表respuestas具有別名r1order by將看起來像這樣:

order by r1.preg_respuesta desc