我得到了一些代码,需要查看三个表以显示我的世界顶级列表的一些信息。表格如下:
服务器
id | user_id | name | information | websitename | websiteurl | postdate.. etc
这是包含服务器名称、网站信息(服务器的完整描述)等的主表。
投票
id | server_id | username | ipaddress | votetimestamp
在网站上,我允许玩家每 24 小时投票一次。所有投票都被插入到这个表中,用户在游戏中的名称(用户名)、服务器 ID 和投票时间。
平
id | server_id | min_player | max_player | motd | pingtimestamp
该表每 10 分钟由另一个脚本更新一次,其中 CronJobs 使用 fsock 在我的 Web 服务器上运行。这样做我可以知道服务器是离线还是在线,有多少玩家在线以及一次可以有多少玩家在线。
在我的索引页面上,我得到了一个脚本,该脚本应该将所有三个表中的数据提取到网页上,并按照数据库顺序显示每个服务器,排在得票最多的服务器到得票最少的服务器之后。
我可以拉出所有已经在投票表中投票的服务器,但是如果有一个服务器还没有收到投票,它就不会被列出。这是我使用的 SQL 代码。
SELECT DISTINCT(ping.server_id), COUNT(vote.server_id) AS count, servers.id,
servers.name, servers.server_ip, ping.min_player,ping.max_player,ping.motd
FROM servers,vote,ping
WHERE servers.id = vote.server_id
AND servers.id = ping.server_id
GROUP BY servers.id
ORDER BY count DESC
LIMIT $start, $per_page
我确信这很简单,但我现在尝试了一些东西,但似乎没有任何效果。在这一点上提一下 SQL 并不是我的强项是个好主意。
编辑 我试图删除字符串中的“DISTINCT”,但由于某种原因,它返回每台服务器的多行,这些服务器不止一次显示服务器。每个服务器应该只显示一次,从上到下排序在获得最多票数到最少票数的服务器之后。