|
|
|
| В таблице user хранятся записи о пользователях. В таблице user_foto хранятся адреса их фото (по нескольку штук на каждого).
Нужно выбрать 10 случайных фотографий пользователей.
Запрос:
SELECT f.src,f.comments,u.id,u.name
FROM user_foto f
LEFT JOIN user u ON u.id=f.id
GROUP BY u.id
ORDER BY RAND()
LIMIT 10
|
выбирает 10 записей случайных полозователей и по одной фотографии к ним. Проблема в том, что для всех пользователей выбираются одни и те же фото. Как сделать запрос, который будет выбирать разные фото? | |
|
|
|
|
|
|
|
для: kosta_in_net
(17.02.2012 в 12:45)
| | Вам придется либо вложенный запрос организовывать, либо заменять таблицу user_foto на выборку в которой будет ORDER BY. | |
|
|
|
|
|
|
|
для: cheops
(17.02.2012 в 12:54)
| | не понял, в чем разница между "лобо вложенный запрос... либо заменить таблицу... на выборку"... Тем не менее, такой запрос помог:
SELECT f.src,f.comments,u.id,u.name
FROM user u
LEFT JOIN (
SELECT src,comments,id
FROM user_foto
ORDER BY RAND()
) f ON u.id=f.id
WHERE f.src
GROUP BY u.id
ORDER BY RAND()
LIMIT 10
|
Выбираются случайные фото 10 случайных (в случайном порядке) пользователей
Аналогично:
SELECT f.src,f.comments,u.id,u.name
FROM user u
INNER JOIN (
SELECT src,comments,id
FROM user_foto
ORDER BY RAND()
) f ON u.id=f.id
GROUP BY u.id
ORDER BY RAND()
LIMIT 10
|
| |
|
|
|