Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: union и order
 
 автор: skinny   (24.09.2011 в 16:21)   письмо автору
 
 

нашёл тут несколько таких тем, но там ответа внятного нет
есть запрос:

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`

то всё гут, если использовать сортировку то пишет ошибку.
Как правильно в этом случае поступить?
Как сделать и сортировку и штоб запрос выполнялся?

Пока ждал, нашёл ответ - нужно вместо 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования