Я предпочитаю держать имена моих таблиц в единственном числе.Это не таблица "Истории";это таблица «История» с несколькими строками.
Голос можно отнести только к одной истории, так что это отношение один ко многим между ними.Я бы положил внешний ключ в таблицу голосов и позволил указать на историю, с которой он связан.Измените схему, если вы согласны: удалите voteid
из таблицы story
и сделайте storyid
in vote
внешним ключом для таблицы story
.можно попробовать запрос, подобный этому:
select stories.storyid, sum(vote=-1) as down, sum(vote=1) as up
from stories
inner join votes on (stories.storyid = votes.storyid)
group by stories.storyid
Исправлено в комментариях ypercube ниже.