2011-12-26 63 views
1

我是PHP和MySQL的新手 - >我还不好。 今天我遇到了这个问题。我有连接2个表“投票”和查询“的故事” 这:找不到mysql查询

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 

但我不知道如何实现它,我加入两个数据库中的第一个查询。

回答

2
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 
2
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粘贴在那里。请务必按照正确的顺序放置它。

+0

为防万一我忘了在我的问题中提到它,$ date变量是这个“WHERE stories.st_date> = DATE_SUB(NOW(),INTERVAL 32 DAY)”,所以在它之后我会坚持和stories.showing = 1,对吗? – Ilja 2011-12-26 13:14:40

+0

这是正确的。 – 2011-12-26 13:24:46

1

它没有问题,只是为了增加它,因为它是基表的联接:

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 
+0

为了防万一我忘了在我的问题中提到它,$ date变量是这个“WHERE stories.st_date> = DATE_SUB(NOW(),INTERVAL 32 DAY)”,所以在它之后我会坚持AND stories.showing = 1 ,对吗? – Ilja 2011-12-26 13:15:15

+0

@IlyaKnaup是:) – 2011-12-26 13:31:28

1

改变您的查询

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 
1

使用具有显示= 1它应该解决你的问题。