2011-12-26 59 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它應該解決你的問題。