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

Форум MySQL

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

 

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

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

тема: Что-то не пойму как работает сортировка при объединенном запросе...
 
 автор: tAleks   (25.03.2007 в 21:46)   письмо автору
 
 

Есть такой запрос:

(SELECT 
    1 AS file,
    id_group,
    NULL AS id_article,
    DATE_FORMAT(date_add, '%d.%m.%Y') AS date,
    name,
    description,
    new
FROM articles_groups 
    WHERE pid_group = ".mysql_escape_string($id_group)." AND showhide = 'show'
ORDER BY pos)
UNION ALL
(SELECT 
    2,
    id_group,
    id_article,
    DATE_FORMAT(datetime, '%d.%m.%Y'),
    name,
    description,
    NULL
FROM articles
    WHERE id_group = ".mysql_escape_string($id_group)." AND showhide = 'show')
ORDER BY file, new, date DESC, name
LIMIT $start, $numrec"


Первым запросом извлекаю группы, вторым статьи.
Хочу чтобы группы, в первую очередь были отсорированы по позиции.
И че-то эта конструкция ничего не сортирует, точнее не сортирует группы по позиции.

Подскажите кто знает...

   
 
 автор: Trianon   (25.03.2007 в 21:59)   письмо автору
 
   для: tAleks   (25.03.2007 в 21:46)
 

Внешний ORDER никак не упоминает поле pos.
Более того, это поле вообще из внутреннего селекта вовне не выходит.
Вот по нему порядок и разрушается.

   
 
 автор: tAleks   (25.03.2007 в 23:13)   письмо автору
 
   для: Trianon   (25.03.2007 в 21:59)
 


(SELECT  
    1 AS file, 
    id_group, 
    NULL AS id_article, 
    DATE_FORMAT(date_add, '%d.%m.%Y') AS date, 
    name, 
    description, 
    new 
FROM articles_groups  
    WHERE pid_group = ".mysql_escape_string($id_group)." AND showhide = 'show' 
ORDER BY pos
UNION ALL 
(SELECT  
    2, 
    id_group, 
    id_article, 
    DATE_FORMAT(datetime, '%d.%m.%Y'), 
    name, 
    description, 
    NULL 
FROM articles 
    WHERE id_group = ".mysql_escape_string($id_group)." AND showhide = 'show') 
ORDER BY file, new, date DESC, name 
LIMIT $start, $numrec" 

   
 
 автор: Trianon   (25.03.2007 в 23:55)   письмо автору
 
   для: tAleks   (25.03.2007 в 23:13)
 

Это внутренний ордер первого селекта - он у Вас внутри скобок.
Внешний ордер у Вас внизу.
Говоря откровенно, смысл внутреннего ордера представляется мне сомнительным.
Насколько я представляю, order by влияет лишь на порядок представления результирующего набора.
P.S. Я умею читать.... не только жирный шрифт.

   
 
 автор: cheops   (26.03.2007 в 01:14)   письмо автору
 
   для: Trianon   (25.03.2007 в 23:55)
 

>Говоря откровенно, смысл внутреннего ордера представляется мне сомнительным.
Да просто игнорируется он и всё, а ORDER BY последнего запроса применяется к результирующей таблице, получающейся в результате объединения результирующих таблиц отдельных запросов. Круглые скобки при этом никак не должны помогать.

   
 
 автор: tAleks   (26.03.2007 в 09:58)   письмо автору
 
   для: cheops   (26.03.2007 в 01:14)
 

А итог-то кокой?
Если внутренний ORDER игнорируется, то группы по позиции мне никак не отсортировать чтоли?

   
 
 автор: Trianon   (26.03.2007 в 10:06)   письмо автору
 
   для: tAleks   (26.03.2007 в 09:58)
 

Внешним :)

   
 
 автор: tAleks   (26.03.2007 в 23:26)   письмо автору
 
   для: Trianon   (26.03.2007 в 10:06)
 

ага, но только мне надо чтобы группы были отсортированы по позиции (pos) а статьи, по дате.
А, внешний, как я понимаю, все сортирует.... так?

   
 
 автор: Trianon   (27.03.2007 в 00:43)   письмо автору
 
   для: tAleks   (26.03.2007 в 23:26)
 

> мне надо чтобы группы были отсортированы по позиции (pos) а статьи, по дате.
>А, внешний, как я понимаю, все сортирует.... так?

Внешний - он же единственный - сортирует строки результата. И ему всё равно, из чего они получены, из строк групп или строк статей.
Гляньте аналогичную тему 10100100 - ну точно та же ситуация ведь. Может это спасет?

   
Rambler's Top100
вверх

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