|
|
|
| нашёл тут несколько таких тем, но там ответа внятного нет
есть запрос:
SELECT `id`, `name`, `capt` FROM `tegs` WHERE (`deleted` = 1 AND `id` = '16' ) LIMIT 1
UNION
SELECT `id`, `name`, `capt` FROM `tegs` WHERE (`deleted` = 1 AND `mother_id` = '16' ) ORDER BY `poriadok`
|
вопщем смысл в том что есть 2 запроса
извлекаемые поля одинаковые, разные только условия
в первом запросе извлекается одна строка, а во втором извлекаются все "подстроки"
если убрать из 2 запроса сортировку,
то всё гут, если использовать сортировку то пишет ошибку.
Как правильно в этом случае поступить?
Как сделать и сортировку и штоб запрос выполнялся?
Пока ждал, нашёл ответ - нужно вместо ORDER BY `poriadok` указать номер того столбца по которому следует сделать сортировку, а сам столбец, по которому сортировать должен быть в выборке т.е.:
SELECT `id`, `name`, `capt`, `poriadok` FROM `tegs` WHERE (`deleted` = 1 AND `id` = '16' ) LIMIT 1
UNION
SELECT `id`, `name`, `capt`, `poriadok` FROM `tegs` WHERE (`deleted` = 1 AND `mother_id` = '16' ) ORDER BY 4
|
будет отсортирован и тот и тот запрос по столбцу №4
или если нужно отсортировать по 2 столбцам
SELECT `id`, `name`, `capt`, `poriadok` FROM `tegs` WHERE (`deleted` = 1 AND `id` = '16' ) LIMIT 1
UNION
SELECT `id`, `name`, `capt`, `poriadok` FROM `tegs` WHERE (`deleted` = 1 AND `mother_id` = '16' ) ORDER BY 1,4
|
будет отсортирован и тот и тот запрос по столбцу сначала по столбцу №1 а потом по стобцу №4 | |
|
|