Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с union в MySQL


VictorT ©   (2006-04-19 10:36:00) 

запрос такого вида работает:
(select ...)
union
(select ...)
union
(select ...)
union
(select ...)
order by rand() limit n


добавляюю две скобки (выделены жирным) то перестаёт работать:
(select ...)
union
(select ...)
union
((select ...)
union
(select ...)
order by rand() limit n )


Т.е. мне нужна такая логика работы запроса, чтобы order by rand() limit nбыло применено только к последним двум select-ам.
Как добится такого результата?


VictorT   (2006-04-19 12:34:00) [1]


> Плохиш ©

Спасибо огромное, по твоему способу получилось, правда пришлось ещё поиграться.


VictorT   (2006-04-19 11:28:00) [2]


> Плохиш ©   (19.04.06 10:59) [9][Ответить]

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


VictorT   (2006-04-19 11:06:00) [3]


> Если для всего результата UNION необходимо применить
>оператор ORDER BY
> при вникании просветляет

Вникал.

> Про объединение результатов работы нескольких команд
> UNION там ничего не говориться, так с чего оно должно
> работать?
Видимо, в этом дело :( Получается, это не решается (без дополнительных таблиц)?


Плохиш   (2006-04-19 10:59:00) [4]


> не понял, что это даёт

Это даёт
> Фраза "UNION используется для объединения результатов работы
> нескольких команд SELECT в один набор результатов."

Может попробовать?


VictorT   (2006-04-19 10:58:00) [5]


>(select ...)
>union
>(select ...)
>union
>select ... from ((select ...)
>union
>(select ...)
>order by rand() limit n)
>
> Может поможет?

не понял, что это даёт


Плохиш   (2006-04-19 10:56:00) [6]


> Вот именно тут первым делом и прочитал. Невижу отсюда, почему
> не должен работать второй запрос.

Фраза "UNION используется для объединения результатов работы нескольких команд SELECT в один набор результатов."Про объединение результатов работы нескольких команд UNION там ничего не говориться, так с чего оно должно работать?


Desdechado   (2006-04-19 10:54:00) [7]

> Невижу отсюда
Там действительно не очень понятно, хотя
Если для всегорезультата UNION необходимо применить оператор ORDER BY
при вникании просветляет


VictorT   (2006-04-19 10:49:00) [8]


> И ничего, надо думать, не говорит.
Говорит. Малоинформативное сообшение:  You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

> Документацию читать не пробовал?
Пробовал.

> Эта проблема ни какого отношения к делфи не имеет.
Я задал вопрос в конференции "базы".

> http://www.mysql.ru/docs/man/UNION.html
Вот именно тут первым делом и прочитал. Невижу отсюда, почему не должен работать второй запрос.


Плохиш   (2006-04-19 10:48:00) [9]


> Desdechado ©   (19.04.06 10:45) [3]
> ORDER BY применяется ко всему результату UNION'ов

A http://www.mysql.ru/docs/man/UNION.html не согласен ;-)


> VictorT ©   (19.04.06 10:36)

(select ...)
union
(select ...)
union
select ... from((select ...)
union
(select ...)
order by rand() limit n)

Может поможет?


Desdechado   (2006-04-19 10:45:00) [10]

ORDER BY применяется ко всему результату UNION'ов


Johnmen   (2006-04-19 10:41:00) [11]

http://www.mysql.ru/docs/man/UNION.html


Плохиш   (2006-04-19 10:39:00) [12]


> добавляюю две скобки (выделены жирным) то перестаёт работать

И ничего, надо думать, не говорит. Документацию читать не пробовал? Эта проблема ни какого отношения к делфи не имеет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо