2013-08-15 4 views
1

I'am пытаются получить случайным образом 3 различных строк из 2 таблиц с различными полямиКак выбрать различные строки из таблиц 2

SELECT * FROM `models` JOIN banners WHERE `recomended` = '1' ORDER BY RAND() LIMIT 0,3 

Я хочу, чтобы результат, как этот:

first row - table1.id table1.name table1.points 
second row - table2.id table2.group table.2points 
third row - table1.id table1.name table1.points 

является то, что возможно?

+0

Я думаю, что нет. SQL возвращает t1.id, t2.id, t3.id, и в вашей системе вы организуете эту информацию. – AFetter

ответ

0

Вот один способ получить то, что вы хотите:

select id, name, points 
from ((select id, name, points, 1 as which 
     from table1 
     order by rand() 
     limit 1 
    ) union all 
     (select id, group, points, 2 as which 
     from table2 
     order by rand() 
     limit 1 
    ) union all 
     (select id, name, points, 3 as which 
     from table1 
     order by rand() 
     limit 1 
    ) 
    ) t 
order by which; 
+0

Я думаю, что это всегда вернет 1 строку из таблицы 1 и 2 из таблицы 2 – skv

+0

@skv. , , Я не уверен, что вы имеете в виду. Кажется, что, очевидно, берут две строки из таблицы 1 и одну из таблицы2. –

+0

Да, это правильно, я просто интерпретировал вопрос о том, что порой ОП хотел случайное количество записей из таблицы1 и таблицы2, поэтому добавила альтернативную версию, извините, что говорила table1 для 2 и наоборот в своем предыдущем комментарии – skv

Смежные вопросы