私はまだ投票していないすべてのユーザーを表示しようとしています!私は投票していないユーザーを表示します - 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 */
私がこだわっているの作品!
** は、この不良少年は、私が投票していない時に1人のランダムなユーザーを吐き出すワーキングクエリ ****
/* 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;
を更新しました!あなたの助けをありがとう、多くのaprpeciated!
あなたが想像していたように、私はランダムな人に投票しています。その人はwho_votedテーブルに入れて、ランダムなクエリを何も表示しません...私のコードを簡素化したいSQLの誰ですか?乾杯ミック
あなたが言うvotes.idがNULL' IS WHEREあなたは '言う場所「に投票されていないすべてのユーザーの名前を表示する」のが、スキーマ内の最初のクエリidはnullではありませんか? –