我有评级系统,人们可以根据想法评分。用户可以从SQLite数据库中获取他尚未投票的想法的摘要。我的问题是数据库仍然得到他已经投票的想法。我的查询必须运行的表如下所示:
ID (pk), ratingScore, userID, ideaID
1 3 1 1
2 4 2 1
3 5 2 2
评分得分是用户提出想法的得分,userID是投票用户的ID,ideaID是想法的ID。
如何在没有获得其他想法的情况下从用户1获取他未投票的想法,因此此表上的查询结果将只是'ideaID 2'。
SELECT Ratings.ideaID
FROM Ratings
WHERE (NOT(Ratings.userID)=1)
GROUP BY ideaID;
这是我尝试的,但它没有用,我也试过DISTINCT,但这也不起作用。
答案 0 :(得分:1)
您需要获取所有提示的列表,然后将其加入到您的表中,如下所示:
SELECT ideas.ideaID
FROM (SELECT DISTINCT ideaID FROM Ratings) ideas LEFT JOIN
Ratings r ON r.ideaID = ideas.ideaID AND r.userID=1
WHERE r.ideaID IS NULL;
上面的示例将为您提供单个用户的未投票想法列表。
答案 1 :(得分:1)
假设您有一个Ideas
表,您可以使用这样的相关子查询来查找对该用户没有评级的想法:
SELECT ID
FROM Ideas
WHERE NOT EXISTS (SELECT 1
FROM Ratings
WHERE userID = 1
AND ideaID = Ideas.ID)
(如果有任何想法没有被任何用户评价,那么从Ratings
表中读取想法就会失败。)