我有两张桌子。
一个是持有游戏的头衔。 另一个是持有玩这些游戏的用户的排名。
SELECT r.game, u.username, r.userid, r.points
FROM tbl_game g
INNER JOIN tbl_ranking r ON r.game = g.name
INNER JOIN tbl_users u ON u.id = r.userid
WHERE g.active = '1'
AND r.type = '1'
ORDER BY rand( ) , r.points
LIMIT 3
这是我的尝试。
我要做的是从tbl_game表中选择一个随机行,然后将其连接到tbl_ranking表中的三个最佳用户。
例如,如果随机选择了Madden,它会为该游戏找到最好的3个用户并将其返回。
知道如何在一个查询中执行此操作吗? 有可能吗?
由于
EDIT 我现在尝试了我认为正确的方法。 我有语法错误,如果有人可以帮忙吗?
SELECT userid, points(
SELECT name
FROM tbl_game
WHERE active = '1'
ORDER BY rand( )
LIMIT 1
) AS randgame
FROM tbl_ranking
WHERE TYPE = '1'
AND game = randgame
ORDER BY points DESC LIMIT 3
编辑...需要在查询中添加更多内容
需要从tbl_format中选择Xbox 360或Playstation 3,并确保只对两者上的用户进行比较。
SELECT r.game, u.username, r.userid, r.points
FROM tbl_ranking r
INNER JOIN tbl_users u ON u.id = r.userid
WHERE r.type = '1'
AND r.game = (
SELECT name
FROM tbl_game
WHERE active = '1'
ORDER BY rand( )
LIMIT 1 )
AND u.format = (
SELECT format
FROM tbl_format
WHERE active = '1'
ORDER BY rand( )
LIMIT 1 )
ORDER BY r.points DESC
LIMIT 3
这个想法是你加入到他们有一个字段format
的用户表中,他们要么是ps3,要么是xbox360。因此,当您运行查询时,从tbl_format表中选择ps3或xbox360,将其与用户名进行比较,并在一个控制台上选择三个用户,或从随机选择的游戏中选择另一个用户!
有什么想法吗?
由于
答案 0 :(得分:2)
SELECT userid, points
FROM tbl_ranking
WHERE TYPE = '1'
AND game = (SELECT name
FROM tbl_game
WHERE active = '1'
ORDER BY rand( )
LIMIT 1
)
ORDER BY points DESC LIMIT 3
我认为这就是你想要的
答案 1 :(得分:0)
从SELECT userid, points,
开始(在点之后添加逗号)。