Связывание таблиц в MySQL - PullRequest
4 голосов
/ 29 мая 2011

Мне нужно знать, как связать две таблицы в настройке php / mysql и затем ранжировать результаты?
Вот моя ситуация.

У меня есть таблица историй:

storyid
writerid
title
story
submitdate

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

voteid
userid
storyid
vote

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

1 Ответ

4 голосов
/ 29 мая 2011

Я предпочитаю держать имена моих таблиц в единственном числе.Это не таблица "Истории";это таблица «История» с несколькими строками.

Голос можно отнести только к одной истории, так что это отношение один ко многим между ними.Я бы положил внешний ключ в таблицу голосов и позволил указать на историю, с которой он связан.Измените схему, если вы согласны: удалите 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 ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...