MySQL选择Count(来自另一个表)大于X的项目

时间:2014-07-30 17:45:21

标签: php mysql sql

以下情况:我有一个用户和服装列表,每个用户都可以创建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' 

我做错了什么?

2 个答案:

答案 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子句中使用(命名)计算