2016-07-05 86 views
0

我需要连接三张表的帮助,此图显示了字段和表名。从数据库加入三张表

提取物:

voting table 
id name closed date  votes_up votes_down 
4 29192  0 1467441761  32   14 
21 14427  0 1467450299  1   0 
20 14464  0 1467449751  0   0 
14 27345  0 1467447075  0   0 
9 27329  0 1467443096  1   0 


games table 
id id_gamepressure id_gamepressure2 title 
256    8228   10759 Yu-Gi-Oh! World Championship 2007 
512    2520    9294 Boulder Dash Rocks! 
768   10155   12664 SpongeBob vs. The Big One. Beach Party Cook-Off 
1024    9587    8484 Nacho Libre 

images table 
id id_game id_gamepressure filename 
30695 10001   173814 10001_deca-sports_11792.jpg 
30690 10001   173819 10001_deca-sports_1524.jpg 
30692 10001   173817 10001_deca-spoets_3551.jpg 
30694 10001   173815 10001_deca-sportss_572.jpg 
30693 10001   173816 10001_deca_sports_8866.jpg 
30691 10001   113818 10001_deca-sports_9417.jpg 

基本上,我希望能够通过从“表决表”中找到最流行的游戏使用字段“votes_up”然后链接的“游戏表”匹配它并最终与“图像表”

我想以列表形式显示它,按最高投票的游戏排序。

这样的:

  1. 游戏标题(等级)(图)
+0

请添加您的表格定义 –

+0

告诉我们您做了什么 – theinarasu

+0

您不需要加入他们然后,您需要在select中选择一个子查询,然后对该值进行排序。假设投票“投票表”是一个单独的表,而不是数字值。本质上,你必须为每场比赛汇总选票。 – ArtisticPhoenix

回答

0

这样的事情,我不知道从图像中实际的表名。或者你想要什么领域。

SELECT 
    g.id, 
    i.id //or whatever fields you want. 
FROM 
    games AS g 
INNER JOIN 
    images AS i 
ON 
    g.id = i.id_game 
LEFT JOIN 
    votes AS v 
ON 
    g.id = v.name 
ORDER BY 
    v.votes_up 
DESC 

在这种情况下,票已经是你没有指望他们像我想的总和,(票将每票1行,这就是我的想法)

标识使用左边的加入,但我想你想要的最多投票的游戏,这并不重要。

确保ID是索引以及投票计数或排序会杀死性能。

+0

我试过了,得到这个错误。 SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以在'.id //'或任何您想要的字段附近使用正确的语法。 FROM 游戏为G INNER JOIN 图像作为“第3行 – CPuser

+0

删除了//并仍然得到这个... SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查对应于你的MySQL服务器版本使用附近的“.ID FROM 游戏为G INNER JOIN 图像作为我 ON g.id = i.id_game LEFT”第3行正确的语法手册 – CPuser