我需要从我的用户表中选择结果,并按照rtgitems中存储的评级对它们进行排序。在users表中,每个用户都有一个唯一的ID,在项目列的rtgite中使用,如rt_(来自users表的ID)。
以下是我用来从users表中选择的代码:
$result = mysqli_query($con,"SELECT * FROM users WHERE `approved` = 1 ORDER BY ");
以下是从rtgitems表中获取评分的代码
SELECT `item`
, (`totalrate` / `nrrates`) AS `rank`
FROM `rtgitems`
ORDER BY (`totalrate` / `nrrates`) DESC
答案 0 :(得分:1)
这样的查询应该返回指定的结果集:
SELECT u.*
, r.totalrate/r.nrrates AS `rank`
FROM users u
JOIN rtgitems r
ON r.user_id = u.id
WHERE u.approved = 1
ORDER BY r.totalrate/r.nrrates DESC, u.id ASC
简要说明:JOIN
运算符指定两个表(用户和rtgitems)中的行应根据ON
子句中的谓词“匹配”。
每当查询中引用多个表时,最佳做法是限定所有列引用。通常最简单的方法是为每个表引用分配一个唯一的别名。 (这是分别给予users表和rtgitems表的短名u
和r
。对这些表中列的引用前面带有别名和点(句点)。