хочу сделать что то такое
$query = query("SELECT * FROM `table1` UNION SELECT * FROM `table2` ORDER BY RAND() LIMIT 1");
т.е. выбрать из 2х баз, перемешать, вывести одну.
помогите
Спустя 9 минут, 9 секунд (13.10.2010 - 18:36) arvitaly написал(а):
Вопрос то в чем?
Спустя 4 минуты, 47 секунд (13.10.2010 - 18:40) Crash2007 написал(а):
"помогите построить запрос"
вопрос решён.(таблицы не были идентичны)
соры
вопрос решён.(таблицы не были идентичны)
соры
Спустя 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 написал(а):
переделывать...........=(
Спустя 1 час, 13 минут, 30 секунд (13.10.2010 - 20:23) vasa_c написал(а):
добавить в каждую выборку по полю "из какой таблицы"?
кстати, не уверен что ORDER BY применяется к UNION, а не ко второй таблице.
кстати, не уверен что ORDER BY применяется к UNION, а не ко второй таблице.
Спустя 13 минут, 12 секунд (13.10.2010 - 20:37) sergeiss написал(а):
Цитата (Crash2007 @ 13.10.2010 - 19:43) |
а как узнать из какой таблицы вывелись данные? |
Очень просто Примерно так (при условии, что структура таблиц одинаковая);
select *, 1 as indicator from `table1`
union
select *, 2 from `table2`
order by rand()
limit 1
И кстати... Рекомендую запросы писать с разделением на строки, чтобы проще было ориентироваться.
Если же имеется паранойя и хочется быть уверенным, что результат перемешается и только потом будет взята случайная строка, то можно его немного усложнить:
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 :)