проблема с составлением sql запроса

xInOrK

Новичок
проблема с составлением sql запроса

Не могу составить запрос, надо вытащить 1 фотку рандомно из тех за которые не голосовал юзер.

[sql]SELECT p.`id` FROM `pictures` as `p` LEFT JOIN `users` as `u` ON p.`uid`=u.`id` ORDER by RAND() LIMIT 1[/sql]

[sql]CREATE TABLE `pictures` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`uid` bigint(20) NOT NULL default '0',
`picture` varchar(15) NOT NULL default '',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `picture` (`picture`)
) ENGINE=MyISAM;

INSERT INTO `pictures` VALUES (1, 4, '82fe61.jpg');
INSERT INTO `pictures` VALUES (2, 4, '74d1fc.jpg');
INSERT INTO `pictures` VALUES (3, 4, 'e92249.jpg');

CREATE TABLE `users` (
`id` bigint(20) unsigned NOT NULL auto_increment,
`login` varchar(15) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM;

INSERT INTO `users` VALUES (1, 'asd');
INSERT INTO `users` VALUES (2, 'wwq');
INSERT INTO `users` VALUES (3, 'sjsk');
INSERT INTO `users` VALUES (4, 'sdjak');

CREATE TABLE `votes` (
`pid` bigint(20) unsigned NOT NULL default '0',
`uid` varchar(15) NOT NULL default '',
`time` varchar(20) NOT NULL default '',
KEY `pid` (`pid`)
) ENGINE=MyISAM;

INSERT INTO `votes` VALUES (3, 1);
INSERT INTO `votes` VALUES (27, 2);
INSERT INTO `votes` VALUES (24, 3);
INSERT INTO `votes` VALUES (23, 3);
INSERT INTO `votes` VALUES (55, 4);
[/sql]
 

chisto_tolyan

Враг народа
[SQL]
SELECT p.`id`
FROM `pictures` AS `p`
LEFT JOIN `users` AS `u` ON p.`uid` = u.`id`
LEFT JOIN `votes` AS `v` ON p.`id`=v.`pid`
WHERE v.`pid` IS NULL
ORDER BY RAND( )
LIMIT 1
[/SQL]
 

xInOrK

Новичок
Автор оригинала: chisto_tolyan
[SQL]
SELECT p.`id`
FROM `pictures` AS `p`
LEFT JOIN `users` AS `u` ON p.`uid` = u.`id`
LEFT JOIN `votes` AS `v` ON p.`id`=v.`pid`
WHERE v.`pid` IS NULL
ORDER BY RAND( )
LIMIT 1
[/SQL]
ну там же ещё и по юзеру надо проверять ? Дан ид юзера и вот надо чтобы только была фотка из тех за которые он не голосовал.

-~{}~ 07.12.05 22:42:

Так что никто не может помочь :(? Просто второй день исщу решение.
 

chisto_tolyan

Враг народа
[SQL]
SELECT p.`id`
FROM `pictures` AS `p`
LEFT JOIN `users` AS `u` ON p.`uid` = u.`id`
LEFT JOIN `votes` AS `v` ON p.`id` = v.`pid`
WHERE u.`id`=$user_id
AND v.`pid` IS NULL
ORDER BY RAND( )
LIMIT 1
[/SQL]
 

xInOrK

Новичок
Автор оригинала: chisto_tolyan
[SQL]
SELECT p.`id`
FROM `pictures` AS `p`
LEFT JOIN `users` AS `u` ON p.`uid` = u.`id`
LEFT JOIN `votes` AS `v` ON p.`id` = v.`pid`
WHERE u.`id`=$user_id
AND v.`pid` IS NULL
ORDER BY RAND( )
LIMIT 1
[/SQL]
Таким запросом он выведет только фотки данного ($user_id) юзера.

-~{}~ 08.12.05 14:34:

надо типа LEFT JOIN `votes` as `v` ON p.`id`=v.`pid` AND v.`uid`=u.`id` WHERE v.`pid` IS NULL :p только помоему в ON нельзя ставить два параметры или можно?
 

xInOrK

Новичок
Ок, спасибо, похоже работает :) всем спасибо тема закрыто :)
 
Сверху