繁体   English   中英

无法弄清mysql查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM