[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Очень "тонкий" Select в MYSQL
NitroGenerate
Всем доброго времени суток. Не могу разобраться с сортировкой.
Есть поля:
`invisible`, 'no,yes'
`checked`, 'no,edit,yes'
`time_delete` unixtimestamp

Задача:
Сначала вывести все те, где
`invisible`, 'yes' ;
`checked`, 'no,edit' // по порядку
отсортировать по `time_delete`

Затем все остальные где сначала
`invisible`, 'no' ;
`checked`, 'no,edit,yes' // по порядку
отсортировать по `time_delete`
после остатки где:
`invisible`, 'yes' ;
`checked`, 'no,edit,yes' // по порядку
отсортировать по `time_delete`

Ничего лучше не придумал как использовать union

Сейчас селект таков:
SELECT 
ORDER BY
FIND_IN_SET(`invisible`, 'no,yes'), FIND_IN_SET(`checked`, 'no,edit,yes'), `time_delete`



Предположительно нужный будет:
SELECT *
WHERE
invisible='yes'
and
(checked='no' or checked='edit')
ORDER BY
FIND_IN_SET(`checked`, 'no,edit'),
`time_delete`
UNION

SELECT
*
ORDER BY
FIND_IN_SET(`invisible`, 'no,yes'),
FIND_IN_SET(`checked`, 'no,edit,yes'),
`time_delete`
LIMIT
".$limit_start.", ".$limit_end."


Я понимаю что в конце будут попадаться те строчки которые я вывел вначале, но мозгов не хватает сделать по нормальному =(
Да и то что сделал работать отказывается =(
Пишет:
#1221 - Incorrect usage of UNION and ORDER BY




Спустя 12 минут, 33 секунды (16.01.2012 - 09:15) Placido написал(а):
Цитата (NitroGenerate @ 16.01.2012 - 08:02)
Я понимаю что в конце будут попадаться те строчки которые я вывел вначале, но мозгов не хватает сделать по нормальному =(
Да и то что сделал работать отказывается =(
Пишет:
#1221 - Incorrect usage of UNION and ORDER BY

Ну, во-первых, где FROM? А, во-вторых, строчки повторяться не будут. Чтобы они повторялись, нужно писать UNION ALL.

Спустя 1 час, 56 минут, 12 секунд (16.01.2012 - 11:11) NitroGenerate написал(а):
Ошибка выскакивает из за
ORDER BY 
FIND_IN_SET(`checked`, 'no,edit'),
`time_delete`

перед UNION
убрал и нормально отрабатывает. Но если убрать то сортировка будет не такая.
Соответственно вопрос, почему не сортирует а выплёвывает ошибку ?
( #1221 - Incorrect usage of UNION and ORDER BY )
P.S. когда код упрощал, что бы тут опубликовать, то случайно выкинул этот from

Спустя 10 минут, 5 секунд (16.01.2012 - 11:21) Placido написал(а):
Чтобы не было ошибок, нужно каждый SELECT заключить в скобки.
Цитата
To apply ORDER BY or LIMIT to an individual SELECT, place the clause inside the parentheses that enclose the SELECT
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.