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

Что не так в этом вопросе? Я получаю это:Ошибка Mysql с запросом UNION

ошибка # 1054 - Неизвестный столбец 'preg_respuesta' в 'пункта порядка'»

Пожалуйста, помогите мне.

+0

Не могли бы вы написать, как должен выглядеть результат? – Slasko

ответ

3

A SELECT ... UNION принимает имена его столбцов из первого запроса. Попробуйте

... ORDER BY num_preguntas DESC 

или

.... ORDER BY 2 DESC 

(так как вы сортировки по й колонке в результате.)

+0

он работает спасибо! –

1

Я думаю, что проблема в псевдониме для подсчета столбца. В первом запросе вы назовите его num_preguntas во втором preg_respuesta в результатах finel. Этот столбец имеет имя по имени из первого запроса num_preguntas.

Изменение orger by preg_respuesta desc в orger by num_preguntas desc

0

Это альясинга проблема ... поставить псевдоним таблицы, где столбец preg_respuesta принадлежит.

Пример: ЕСЛИpreg_respuesta колонка принадлежит к таблице respuestas которые имеют псевдоним r1. order by будет выглядеть примерно так:

order by r1.preg_respuesta desc 
Смежные вопросы