php - 连接三个表

标签 php mysql

我需要连接三个表的帮助,此图显示了字段和表名称。

从数据库中提取:

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. 游戏标题(评级)(图片)

最佳答案

像这样,我不知道您的图像中的实际表名称。或者您想要哪些字段。

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 以及投票计数都是索引,否则排序会降低性能。

关于php - 连接三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196200/

相关文章:

mysql - 读/写速度是否取决于索引?

php - PHP 的 ESAPI 不存在?

PHP preg_replace非贪心麻烦

php - 在 WooCommerce 特定订单状态更改上以编程方式添加免费产品

php - Yii2:ActiveQuery 可以返回以 SQL 查询的第一列为键的数组吗?

python - 执行 python 脚本时,列 'date' 的值超出范围

php - Magento 送货价格因国家/地区而异。我怎样才能做到这一点?

mysql - 如何选择具有与给定值列表完全匹配的外键的主键?

php - 上传并存储图像到服务器时为 0 kb

PHP MySQL 使用 where 子句从另一个表插入数据并将唯一值插入到同一行