[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: помогите построить запрос с UNION
Crash2007
привет!)
хочу сделать что то такое
$query = query("SELECT * FROM `table1` UNION SELECT * FROM `table2` ORDER BY RAND() LIMIT 1");

т.е. выбрать из 2х баз, перемешать, вывести одну.
помогите unsure.gif



Спустя 9 минут, 9 секунд (13.10.2010 - 18:36) arvitaly написал(а):
Вопрос то в чем?

Спустя 4 минуты, 47 секунд (13.10.2010 - 18:40) Crash2007 написал(а):
"помогите построить запрос"
вопрос решён.(таблицы не были идентичны)
соры rolleyes.gif

Спустя 3 минуты, 4 секунды (13.10.2010 - 18:43) Crash2007 написал(а):
ыы..а как узнать из какой таблицы вывелись данные?

Спустя 21 минута, 3 секунды (13.10.2010 - 19:05) arvitaly написал(а):
Цитата
ыы..а как узнать из какой таблицы вывелись данные?


unreal question

Спустя 5 минут, 24 секунды (13.10.2010 - 19:10) Crash2007 написал(а):
blink.gif переделывать...........=(

Спустя 1 час, 13 минут, 30 секунд (13.10.2010 - 20:23) vasa_c написал(а):
добавить в каждую выборку по полю "из какой таблицы"?
кстати, не уверен что ORDER BY применяется к UNION, а не ко второй таблице.

Спустя 13 минут, 12 секунд (13.10.2010 - 20:37) sergeiss написал(а):
Цитата (Crash2007 @ 13.10.2010 - 19:43)
а как узнать из какой таблицы вывелись данные?

Очень просто smile.gif Примерно так (при условии, что структура таблиц одинаковая);
select *, 1 as indicator from `table1` 
union
select
*, 2 from `table2`
order by rand()
limit 1


И кстати... Рекомендую запросы писать с разделением на строки, чтобы проще было ориентироваться.


Если же имеется паранойя smile.gif и хочется быть уверенным, что результат перемешается и только потом будет взята случайная строка, то можно его немного усложнить:
select * 
from
(
select *, 1 as indicator from `table1`
union
select
*, 2 from `table2`
) as full_selection
order by rand()
limit 1

Спустя 11 минут, 23 секунды (13.10.2010 - 20:48) arvitaly написал(а):
Чо то я не понял - какая таблица первая такие и будут первые столбцы если * указать, в чем проблема то?


_____________
Рисую на PHP :)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.