SELECT tb2.*
FROM table2 tb2
WHERE tb2.table1_id IN(
SELECT id FROM table1 ORDER BY RAND() LIMIT 0,3
)
LIMIT 0,4
limit для условия
исходные данные:
1) table1 (id,col1,col2)
2) table2 (id,table1_id,col3)
3) данные в таблицах связываются слудующим образом: table1.id=table2.table1_id
Задача:
необходимо выбрать случайно 3 записи из table1, затем выбрать по 4 записи из table2 для каждого из значений выбранных из table1. Если использовать просто LIMIT 4 для второй части запроса, то мы естественно получим только 4 записи, соответствующие первому значению выбранного из table1.... даже незнаю как быть:( все нужно сделать одним запросом.
Буду благодарен за любую помощь в решении задачи.
Код:
Не проверял, но что-то типа такого. Пример не обещает быть идеальным и лучшим и приведен навскидку.
Update:
блин, не правильно понял задание, тут не верно привел, вам надо по 4 значения для каждого, а у меня вообще 4 значения только для всех. Но пост оставлю, вдруг кому понадобится. Вам по идее надо смотреть в сторону GROUP BY