2015-11-26 130 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