我需要知道如何在php / mysql设置中链接两个表然后对结果进行排名?
这是我的情况。
我有一个故事表:
storyid
writerid
title
story
submitdate
和投票表
voteid
userid
storyid
vote
我将投票存储为1,将投票存储为-1
我正在寻找一种方法来加入这两个表,然后根据他们收到的票数对故事进行排名/排序。
我对任何有关如何操作或不同的可能数据库架构的想法持开放态度。
答案 0 :(得分:4)
我更喜欢保持桌子名称的单数。这不是一个“故事”表;它是一个包含多行的“故事”表。
投票只能归结为一个故事,所以这是两者之间的一对多关系。我将外键放在投票表中,让它指出与之相关的故事。如果您同意,请更改您的架构:从voteid
表中删除story
,并在storyid
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
表的外键。
但话虽如此,也许您可以尝试这样的查询:
{{1}}
根据下面的ypercube评论进行了更正。