2011-12-28 1 views
1

У меня есть галерея изображений с функцией голосования, и я пытаюсь отобразить количество голосов за каждое изображение из базы данных.Echo SQL-запрос из таблицы голосования

У меня есть таблица Голосов со следующим ...

vote_id │ user_id │ session_id │ ip │ created_date │ status 

Я пытаюсь получить количество голосов для каждого изображения на экране (несколько изображений на странице), но только один голос на IP и только в течение последней недели (с понедельника до Солнца).

Я не гений, когда дело доходит до такого рода вещей, но это то, что я смог сделать до сих пор, чтобы получить результаты в SQL. Я получаю немного застрял, пытаясь реализовать его в PHP ...

SELECT COUNT(DISTINCT ip) AS Votes FROM 'vote' (я знаю, что его основной, но там вы идете)

+2

Если вы хотите, чтобы получить число голосов, поданных за каждого изображения, где хранится image_id? – cppcoder

+0

Идентификатор изображения хранится в таблице «image» image_id - image_name - image_caption - image_tag - image_url - mime - width - height - size - user_id - created_date –

+0

Итак, как вы знаете, какие голоса были для какого изображения? –

ответ

2

Вот :)
SELECT COUNT(DISTINCT ip) AS Votes, WEEK(created_date) AS week_num FROM 'vote'
group by WEEK(created_date)
order by week_num DESC

2

вы должны группы данных:

group by ip, week(created_date)

+0

У меня есть 'SELECT COUNT (DISTINCT ip) AS Голоса, (SELECT WEEK (created_date) AS week_num FROM tcs_vote WHERE week_num = $ weekNumber AND week_num = (' $ weekNumber '));' но его появление с кодом ошибки: 1054. Неизвестный столбец «ip» в «списке полей»? –

+0

проверьте свою скобку: ... AS Votes, (SELECT ... –

0

Вы должны иметь столбец как image_id в таблице голосов. Тогда вы можете выполнить это по этому запросу.

SELECT image_id, COUNT(DISTINCT ip) AS Votes FROM vote GROUP BY image_id