Выбор из двух таблиц

Grapefruit Lips

Новичок
Выбор из двух таблиц

В таблицу pictures вводятся данные (userid, thumb, date )
у каждого "userid" есть возможность *загрузить* в таблицу до 10 фотографий, т.е. может быть и так:

id ..... userid ..... thumb ..... date

30 ..... 2 ..... pictures/thumbs/2_1.jpg 2006-01-23
31 ..... 2 ..... pictures/thumbs/2_2.jpg 2006-01-23
32 ..... 2 ..... pictures/thumbs/2_3.jpg 2006-01-23
18 ..... 1 ..... pictures/thumbs/1_1.jpg 2006-01-23

Мне надо из таблицы 'users' взять 'username' с 'userid' из таблицы 'pictures'
и показать случайным образом все картинки, у которых один 'userid' в таблице 'pictures'

Другими словами, если 8 человек загрузили по 5 фотографий (или 4)
То надо показать эти 8 картинок, каждую из тех 5-и (или 4-х) случайным образом (random) =)

Я не могу понять как это сделать.
Всё что у меня выходит, это только выводятся эти 8 картинок. Да, все разные, но не меняются при обновлении
Т.е. надо, чтобы если юзер загрузил, например 6 картинок, то при обновлении ЕГО картинки менялись, т.е. каждого юзера (его userid)
PHP:
$sio_bee = "SELECT
   pictures.userid AS userid,
   pictures.date AS date,
   pictures.thumb AS thumb,
   users.username AS username,
   users.id AS id
FROM pictures
LEFT JOIN users 
ON ( users.id = pictures.userid)
GROUP BY users.id
ORDER BY RAND()
ASC";
 
ничего не понимаю
[sql]
SELECT
DISTINCT(pictures.userid), pictures.*
FROM pictures
ORDER BY pictures.userid, pictures.date DESC
[/sql]
 
Попробуй вот так
SELECT
pictures.userid AS userid,
pictures.date AS date,
pictures.thumb AS thumb,
users.username AS username,
users.id AS id, RAND() AS rnd
FROM pictures
LEFT JOIN users
ON ( users.id = pictures.userid)
GROUP BY users.id
ORDER BY rnd
ASC";
 
serglt поменялись картинки у юзеров, но при следующим обновлении остаются те же, на что поменялись. меняются местами сами юзеры, рандомом, а не их картинки, т.е. как у меня и было =(
 
GROUP BY Убери :) и измени ORDER BY userid, rnd. И выводи в цикле ток по одной для каждого узера. Правда чем больше картинок тем медленнее скрипт работает
 
блин, так я думал можно как то с thumb поработать, чтобы она случайным образом выбиралась прямо в запросе для одного userid

А как вывести по одной для каждого юзера? Я новичок в mysql =)
 
Это надо делать в PHP
PHP:
$uid = "";
$result = array ();
while ($row = mysql_fetch_row ($res))
{
    if ($row [0] != $uid)
    {
         $uid = $row [0];
         $result [] = $row; 
    }
}
print_r ($result);
 
ан нет, не всё, теперь не правильно выводит по страницам
$per_page_limit = 1;
$limitvalue = $page*$per_page_limit-($per_page_limit);

"select .. from ...... LIMIT $limitvalue, $per_page_limit";

выводится всё, что в таблице... т.е. на каждой следующей странице будет один и тот же юзер с его рандомными картинками, пока его userid не сменится на userid следующего....
ведь у каждого 'userid' может быть до 10 записей.
как это обозначить? что бы в $limitvalue он считал только уникальные 'userid' , которые не повторяются.


для вывода страниц я это сделал вот так:
PHP:
 $totalrows= mysql_num_rows(mysql_query("
select pictures.userid AS userid,
users.id AS id 
FROM pictures 
LEFT JOIN users 
ON ( users.id = pictures.userid) 
GROUP BY users.id"));
и всё нормально, но как это обозначить в $limitvalue?


ставлю GROUP BY userid ORDER BY thumb,rnd
всё нормально, но картинки не рандомятся...
блин, либо так, либо никак... не понятно


кароче вообще, анрил...
т.к. фотки юзверей записываются как "userid_номерфото.jpg" извратился и написал вот это:

PHP:
$ext = substr($row['thumb'], 1 + strrpos($row['thumb'], ".")); 
$theimgfile="pictures/thumbs/".$row['id']."_".rand(1, 10).".".$ext;
if(file_exists($theimgfile)) {
$theimgfile=$theimgfile;
}else {
$theimgfile="pictures/thumbs/".$row['id']."_1.".$ext;
}
//можно сделать rand(1, $total_users_pics); 
//где $total_users_pics кол-во всех его фоток

но я думаю это всё не правильно, изврат...
не знаю как правильно...
 
Сверху