2012-09-02 45 views
1

當訪問者票,我存儲信息answer_idip(answer_id(767))等MySQL查詢我想知道是誰投票,例如對遊客還有什麼他們投票

我的網站訪問者投票多個投票。

我想知道誰投票的例子(answer_id(767))他們投票給他們什麼。基於ip。讓說answer_id = 767

表:poll_stat

`id` int(11) NOT NULL auto_increment, 
`question_id` int(11) NOT NULL, 
`answer_id` int(11) NOT NULL, 
`ip` varchar(255) NOT NULL, 
`date` date NOT NULL, 
`country` text NOT NULL, 
`time` int(11) NOT NULL, 
`age` int(11) NOT NULL, 

回答

1

我認爲這會爲你工作。

select ip, question_id 
from poll_stat 
where ip in (select ip from poll_stat where answer_id = 767 group by ip) 
and answer_id <> 767 

編輯

嗯......你可能會檢查是否有是對IP列上創建一個INDEX。如果不是這樣,也許它不喜歡IN子句。我將改寫爲連接:

select ip, question_id 
from poll_stat ps1 
inner join (select ip from poll_stat where answer_id = 767 group by ip) ps2 
on ps1.ip = ps2.ip 
where answer_id <> 767 
+0

它不工作,不能真正知道爲什麼原因,當我通過phpmyadmin發送請求,它只是需要很長的,然後PHP超時的原因。 –

+0

它的工作原理,這是最終的,但它是緩慢的顯示行0 - 29(482總計,查詢花費31.3219秒) SQL查詢: SELECT * FROM poll_stat PS1 INNER JOIN( 選擇IP FROM poll_stat WHERE answer_id = 723 GROUP BY IP )PS2 ON ps1.ip = ps2.ip WHERE answer_id <> 723 GROUP BY ps1.answer_id ORDER BY COUNT(*)DESC LIMIT 0,30 –

+0

你檢查,看看如果在ip列上有索引?運行以下'CREATE INDEX ip_index ON poll_stat(ip)'您也可以在'answer_id'列中添加一個。除非你的服務器嚴重負擔過重,否則這個查詢不應該花那麼長時間。 – gangreen