Не могу понять, что такое система "одобрить сообщение, если 10 пользователям это нравится" - PullRequest
2 голосов
/ 22 декабря 2011

У меня есть система голосования за статьи.Статьи хранятся в таблице «истории», а все голоса - в таблице «голоса».идентификатор в таблице «историй» равен номеру элемента в таблице «голосов» (поэтому каждый голос относится к статье с именем элемента).

Я хочу сделать так, чтобы, когда сумма голосов достигла 10, он обновлялся, показывая'field' в таблице 'Stories' со значением "1".

Вот запрос, который я сейчас использую, чтобы вставить голоса в базу данных (я думал добавить что-то в нее или создать другой запрос, чтобы суммировать голосованияпользователь голосует и видит, если они> 10, если да, установите показ = 1):

$q = "INSERT INTO {$this->votes_table} (`vote_value`, `item_name`, `ip`) VALUES({$dir}, '{$story_id}', '{$ip}')";

Вот моя структура базы данных:

Таблица историй

enter image description here


Таблица голосов

enter image description here

1 Ответ

3 голосов
/ 22 декабря 2011

Попробуйте:

CREATE TEMPORARY TABLE tmp_ids SELECT s.id
FROM stories s 
JOIN votes v ON v.item_name = s.id 
WHERE s.showing != 1
GROUP BY s.id 
HAVING SUM(v.vote_value) >= 10;

UPDATE stories SET showing = 1 WHERE id IN (SELECT id FROM tmp_ids)

// РЕДАКТИРОВАТЬ версию при каждом голосовании

UPDATE stories s 
SET s.showing = IF((SELECT SUM(vote_value) FROM votes WHERE item_name = ?) >= 10, 1, 0)
WHERE s.id = ?
...