Как отсортировать этот запрос - PullRequest
0 голосов
/ 05 августа 2011

У меня есть запрос MySQL, и мне нужно упорядочить по времени

    SELECT id, name, level as lvl, leader as par3
FROM Road
WHERE Road.id LIKE '180' 
UNION ALL SELECT id, name, lvl, lastonline, dnd, null, raceid, currenthp, dressed_hp as hp 
FROM Users 
WHERE rid LIKE '180' AND id NOT LIKE (SELECT leader FROM Road WHERE id LIKE '180')
UNION ALL 
SELECT Users.id as id, Users.name, lvl, lastonline, dnd, currentlocid, Location.name as locname, currenthp, dressed_hp as hp 
FROM Users LEFT JOIN Location ON (Location.id = currentlocid) 
WHERE Users.id LIKE(SELECT leader FROM Road WHERE id LIKE '180') ORDER BY Users.timeacceptinvite

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Порядок распространяется на весь союз. Вы не можете указать псевдоним типа Users.timeacceptinvite, который используется только в части объединения. Вы должны указать имя столбца, как определено в самой верхней части объединения.

Сказав это, различные запросы, составляющие ваш союз, имеют разное количество столбцов. Это даст собственную синтаксическую ошибку. В качестве первого шага убедитесь, что все части объединения возвращают одинаковое количество столбцов с одинаковыми типами.

1 голос
/ 05 августа 2011
select x.* from (
  SELECT
    id, name, level as lvl, leader as par3, timeacceptinvite
  FROM Road
  WHERE Road.id LIKE '180' 
  UNION ALL
  SELECT
    id, name, lvl, lastonline, dnd, null, raceid, currenthp, dressed_hp as hp, timeacceptinvite 
  FROM Users 
  WHERE rid LIKE '180'
    AND id NOT LIKE (SELECT leader FROM Road WHERE id LIKE '180')
  UNION ALL 
  SELECT
   Users.id as id, Users.name, lvl, lastonline, dnd, currentlocid, Location.name as locname, currenthp, dressed_hp as hp, timeacceptinvite 
  FROM Users LEFT JOIN Location ON (Location.id = currentlocid) 
  WHERE Users.id LIKE(SELECT leader FROM Road WHERE id LIKE '180')
) as x
 ORDER BY x.timeacceptinvite

редактировать 1

но я думаю, что вы получите разное количество столбцов ошибка ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...