Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Необходима случайная выборка
 
 автор: kosta_in_net   (17.02.2012 в 12:45)   письмо автору
 
 

В таблице 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 записей случайных полозователей и по одной фотографии к ним. Проблема в том, что для всех пользователей выбираются одни и те же фото. Как сделать запрос, который будет выбирать разные фото?

  Ответить  
 
 автор: cheops   (17.02.2012 в 12:54)   письмо автору
 
   для: kosta_in_net   (17.02.2012 в 12:45)
 

Вам придется либо вложенный запрос организовывать, либо заменять таблицу user_foto на выборку в которой будет ORDER BY.

  Ответить  
 
 автор: kosta_in_net   (17.02.2012 в 13:23)   письмо автору
 
   для: 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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования