Php 如何指定JOIN语句中的位置?
这是我第一次尝试使用JOIN MySQL语句 我有两张桌子……游戏和游戏评分 两个表都有一个id列。id表示游戏的id。我只想得到评级列中整数的平均值,其中games_ratings中的id等于games表中的id 选择a.id、a.name、AVGb.rating作为游戏a中的平均值,按a.id顺序按平均值顺序加入游戏b组DESC LIMIT 50 有什么想法吗?试试这个:Php 如何指定JOIN语句中的位置?,php,mysql,join,Php,Mysql,Join,这是我第一次尝试使用JOIN MySQL语句 我有两张桌子……游戏和游戏评分 两个表都有一个id列。id表示游戏的id。我只想得到评级列中整数的平均值,其中games_ratings中的id等于games表中的id 选择a.id、a.name、AVGb.rating作为游戏a中的平均值,按a.id顺序按平均值顺序加入游戏b组DESC LIMIT 50 有什么想法吗?试试这个: SELECT a.id, a.name, AVG(b.rating) AS average FROM game
SELECT a.id, a.name, AVG(b.rating) AS average
FROM games a
LEFT JOIN games_ratings b
ON a.id = b.id # <-- You need this line I believe
GROUP BY a.id
ORDER BY average DESC LIMIT 50;
编辑:如果没有完整的模式,这有点困难,但是您可以尝试这样的方法
SELECT a.id, a.name, AVG(b.rating) AS average, COUNT( b.id) as votes
FROM games a
LEFT JOIN games_ratings b
ON a.id = b.id
GROUP BY a.id
ORDER BY votes DESC, average DESC LIMIT 50; # <-- You may need to modify this line
试试这个:
SELECT a.id, a.name, AVG(b.rating) AS average
FROM games a
LEFT JOIN games_ratings b
ON a.id = b.id # <-- You need this line I believe
GROUP BY a.id
ORDER BY average DESC LIMIT 50;
编辑:如果没有完整的模式,这有点困难,但是您可以尝试这样的方法
SELECT a.id, a.name, AVG(b.rating) AS average, COUNT( b.id) as votes
FROM games a
LEFT JOIN games_ratings b
ON a.id = b.id
GROUP BY a.id
ORDER BY votes DESC, average DESC LIMIT 50; # <-- You may need to modify this line
别忘了他要的WHERE条款: 其中,games_ratings中的id等于games表中的id
别忘了他要的WHERE条款: 其中,games_ratings中的id等于games表中的id
成功了!你太棒了。谢谢它不会让我把你的答案标记为正确的…11分钟lol,所以我最终会把它标记为正确的…我刚刚注意到的一件事…你知道如何让它返回多少票吗。然后让它按平均顺序排列……但票数越多,它就越高?因此,我没有一个5星级的投票率高于4.5星级的800投票率的游戏。你可以尝试我刚刚发布的编辑,但是它可能无法100%工作。您可能需要修改它以满足您的需要。就是这样!你太棒了。谢谢它不会让我把你的答案标记为正确的…11分钟lol,所以我最终会把它标记为正确的…我刚刚注意到的一件事…你知道如何让它返回多少票吗。然后让它按平均顺序排列……但票数越多,它就越高?因此,我没有一个5星级的投票率高于4.5星级的800投票率的游戏。你可以尝试我刚刚发布的编辑,但是它可能无法100%工作。您可能需要修改它以满足您的需要。这没有任何意义,WHERE子句不会做任何事情,因为它根本不会改变结果。由于连接,将只返回两个表中id相同的行,添加WHERE子句就像添加WHERE 1=1一样,毫无意义。实际上,现在我看到它,因为它是左连接,可能没有与a.id匹配的b.id,这意味着您的WHERE子句将从结果集中删除这些行。但是,如果这是期望的结果,那么左连接应该成为连接,从而消除了对WHERE子句的需要。如果他/她以不同的方式质疑WHERE,即:WHERE id=6,您将需要它是的,您是正确的。如果OP问了一个不同的问题,我需要一个不同的答案。这没有任何意义,WHERE子句不会做任何事情,因为它根本不会改变结果。由于连接,将只返回两个表中id相同的行,添加WHERE子句就像添加WHERE 1=1一样,毫无意义。实际上,现在我看到它,因为它是左连接,可能没有与a.id匹配的b.id,这意味着您的WHERE子句将从结果集中删除这些行。但是,如果这是期望的结果,那么左连接应该成为连接,从而消除了对WHERE子句的需要。如果他/她以不同的方式质疑WHERE,即:WHERE id=6,您将需要它是的,您是正确的。如果OP问了一个不同的问题,我会需要一个不同的答案。