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
此查询有什么问题?我得到了这个:
错误#1054 - 未知栏' preg_respuesta'在'订单条款''
请帮帮我。
答案 0 :(得分:3)
SELECT ... UNION
从第一个查询中获取其列名。尝试
... ORDER BY num_preguntas DESC
或
.... ORDER BY 2 DESC
(因为您要按结果中的 2 nd列进行排序。)
答案 1 :(得分:1)
我认为 count 列的别名问题。在第一个查询中,您在第二个num_preguntas
中将其命名为preg_respuesta
,结果很好,此列的名称来自第一个查询num_preguntas
。
将orger by preg_respuesta desc
更改为orger by num_preguntas desc
答案 2 :(得分:0)
这是别名问题...将表别名放在preg_respuesta
列所属的位置。
Ex: IF respuestas
列属于具有别名r1
的表order by
。 order by r1.preg_respuesta desc
看起来像是:
from a in ctx.ItemReceipts
join b in ctx.ItemReceiptStatusTypes on a.Status equals b.ItemReceiptStatusTypeID
into leftJoinItemReceipts
from d in leftJoinItemReceipts.DefaultIfEmpty()
join c in ctx.PurchaseOrders on d.ReferenceID equals c.PurchaseOrderID