[英]Can't figure out mysql query
我是PHP和MySQL的新手->我还不好。 今天我遇到了问题。 我有一个将2个表“ votes”和“ stories”连接起来的查询,它是:
SELECT stories.*, SUM(votes.vote_value) as 'total_votes'
FROM stories JOIN votes ON stories.id = votes.item_name WHERE stories.st_date >= DATE_SUB(NOW(), INTERVAL 32 DAY)
GROUP BY stories.id
ORDER BY total_votes ASC LIMIT 10
我需要对其进行修改,因此它仅从“故事”表中选择信息,其中显示字段= 1
一个简单的查询如下所示:
SELECT * FROM stories WHERE showing = 1
但是我不知道如何在连接两个数据库的第一个查询中实现它。
SELECT stories.*, SUM(votes.vote_value) as 'total_votes'
FROM stories JOIN votes ON stories.id = votes.item_name $date
WHERE showing=1
GROUP BY stories.id
ORDER BY total_votes ASC LIMIT 10
只需将where
粘贴。 但是,请确保以正确的顺序放置它。
SELECT stories.*, SUM(votes.vote_value) as 'total_votes'
FROM stories, votes
WHERE stories.id = votes.item_name AND stories.showing = 1 AND stories.st_date >= DATE_SUB(NOW(), INTERVAL 32 DAY)
GROUP BY stories.id
ORDER BY total_votes ASC LIMIT 10
只需添加它就没有问题,因为它是联接的基表:
SELECT stories.*, SUM(votes.vote_value) as 'total_votes'
FROM stories JOIN votes ON stories.id = votes.item_name $date
WHERE stories.showing = 1
GROUP BY stories.id
ORDER BY total_votes ASC LIMIT 10
将您的查询更改为
SELECT stories.*, SUM(votes.vote_value) as 'total_votes' FROM stories
JOIN votes ON stories.id = votes.item_name
WHERE stories.showing = 1
GROUP BY stories.id
ORDER BY total_votes ASC LIMIT 10
使用HAVING显示= 1,它应该可以解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.