Я пытаюсь отобразить всех пользователей, на которых я еще не голосовал!Показать пользователей, которых я не проголосовал - MySQL
CREATE TABLE IF NOT EXISTS `users`
(`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(200) COLLATE utf8_unicode_ci NOT NULL,PRIMARY KEY (`id`)
);
CREATE TABLE IF NOT EXISTS `whose_voted` (
`voter_user_id` int(11) NOT NULL,
`voted_on_user_id` int(11) NOT NULL,
PRIMARY KEY (`voter_user_id`,`voted_on_user_id`)
)
CREATE TABLE IF NOT EXISTS `votes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`yes_count` int(11) NOT NULL,
`beer_count` int(11) NOT NULL,
`total_votes` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE IF NOT EXISTS `user_votes` (
`users_id` int(11) NOT NULL,
`votes_id` int(11) NOT NULL,
PRIMARY KEY (`users_id`)
)
Я получил эту работу запроса:
/* Show the Names of all users that have not been Voted on */
SELECT users.name
FROM users
LEFT JOIN user_votes ON users.id = users_id
LEFT JOIN votes ON votes_id = votes.id
WHERE votes.id IS NULL
ORDER BY users.name
и этот запрос работает слишком
/* Show all the User Names that I have voted on */
SELECT users.id AS 'User ID', users.name AS 'I\'ve Voted On'
FROM users
INNER JOIN whose_voted ON users.id = voted_on_user_id
WHERE whose_voted.voter_user_id = 32 /* my User ID */
Я застрял на показ пользователей, что я не голосовал на!
** Обновленный Рабочий запрос ****
/* Show a random users I have Not Voted For as of yet */
SELECT
unot.id, unot.name
FROM
users AS unot
WHERE NOT EXISTS (
/* Exclude the users you have voted on from the total user list */
SELECT uhave.id
FROM users AS uhave
INNER JOIN whose_voted ON uhave.id = voted_on_user_id
WHERE unot.id = uhave.id
AND (whose_voted.voter_user_id = 32)
)
AND (unot.id != 32)
AND (RAND()<(SELECT ((1/COUNT(*))*10) FROM users))
ORDER BY RAND()
LIMIT 1;
Это плохой мальчик выплевывает 1 случайный пользователь, в то время, которое я не голосовал на! Спасибо за вашу помощь, много!
Как вы могли себе представить, я голосую за случайного человека, который появляется в таблице who_voted и, следовательно, ничего не показывает снова случайный запрос ... Любые гуру SQL, которые хотят упростить мой код? Cheers Mick
Первый запрос на «Показать имена всех пользователей, которые не были Проголосовал на», где вы говорите 'WHERE votes.id IS NULL', но в схеме вы говорите id не равен нулю? –