以下情况:我有一个用户和服装列表,每个用户都可以创建N服装。用户可以为他们的服装投票。
现在我要列出所有服装和用户。这很好用。但是,如果我想列出每个/所有用户的所有服装,那么就达到了所需的投票数量。所以WHERE count_votes> required_votes。
这就是我所拥有的,但它显然给了我一个错误:
SELECT ay_users.*,
ay_users_outfits.*,
COUNT(ay_votes.voteId) AS countvotes
FROM ay_users_outfits,
ay_users,
ay_votes
WHERE ay_users_outfits.outfitUserId = ay_users.userId
AND ay_votes.voteOutfitId = ay_users_outfits.outfitId
AND ay_users_outfits.outfitRequiredVotes <= countvotes
ORDER BY ay_users_outfits.outfitCreationDate ASC
#1054 - Unknown column 'countvotes' in 'where clause'
我做错了什么?
答案 0 :(得分:1)
看看这个:http://dev.mysql.com/doc/refman/5.0/en/group-by-extensions.html
您需要使用HAVING子句,例如
SELECT
ay_users . *,
ay_users_outfits . *,
FROM
ay_users_outfits,
ay_users,
ay_votes
WHERE
ay_users_outfits.outfitUserId = ay_users.userId AND
ay_votes.voteOutfitId = ay_users_outfits.outfitId
GROUP BY ay_users.userId
HAVING ay_users_outfits.outfitRequiredVotes <= COUNT(ay_votes.voteId)
ORDER BY ay_users_outfits.outfitCreationDate ASC
答案 1 :(得分:0)
原因是没有列countvotes
存在且您在where子句中使用它...
您必须在where子句中使用COUNT(ay_votes.voteId)
。
AND ay_users_outfits.outfitRequiredVotes <= COUNT(ay_votes.voteId)
您不能在where子句中使用(命名)计算