2017-02-20 2 views
0

Почему я не получаю заказ, который я хочу получить с помощью этого запроса?SQL-запрос, дающий неправильный адрес

SELECT 
     e_name, 
     a_shortcut, 
     GROUP_CONCAT(case 
      when t_rank = 1 then a_shortcut 
      when t_rank = 2 then a_shortcut 
      when t_rank = 3 then a_shortcut 
      end separator ',') as group_con 
     FROM team 
     INNER JOIN event 
     ON team.EID = event.eid 
     WHERE e_type = 'nonsport' 
     GROUP BY event.eid ORDER BY t_rank 

Этот запрос дает мне случайный порядок все время, когда я ввожу t_rank. Это не дает мне 1,2,3 порядка, но вместо этого он дает мне случайное все время. Может кто-нибудь помочь мне PLS?

Вот результат, который дает мне

{"nresults":[{"e_name":"Musical Festival - Song Composition","First":"2nd", 
"Second":"1st", 
"Third":"3rd"}]} 

Вот мой ожидаемый выход

{"nresults":[{"e_name":"Musical Festival - Song Composition","First":"1st", 
"Second":"2nd", 
"Third":"3rd"}]} 

enter image description here

+0

как я это исправил, сэр? Я разбираю его в json – orange

+0

i dont follow sir – orange

+2

Если вы имеете в виду, что group_concat не упорядочен, вы должны использовать group_concat с порядком by clause? Пример данных будет приятным. –

ответ

0

Ok я получил это работает. Всем спасибо.

select 
       e_name, 
       a_shortcut, 
       GROUP_CONCAT(case 
       when t_rank = 1 then a_shortcut 
       when t_rank = 2 then a_shortcut 
       when t_rank = 3 then a_shortcut 
       end order by t_rank separator ',') as group_con 
      from 
       team inner join event on team.EID = event.eid Where e_type = 'nonsport' 
group by event.eid 

я просто переместить заказ по п после окончания перед сепаратором внутри GROUP_CONCAT

Смежные вопросы