Есть поля:
`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 написал(а):
Ошибка выскакивает из за
перед UNION
убрал и нормально отрабатывает. Но если убрать то сортировка будет не такая.
Соответственно вопрос, почему не сортирует а выплёвывает ошибку ?
( #1221 - Incorrect usage of UNION and ORDER BY )
P.S. когда код упрощал, что бы тут опубликовать, то случайно выкинул этот from
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 |