使用另一个表中的数据从mysql表中选择

时间:2013-07-16 22:40:51

标签: mysql

我需要从我的用户表中选择结果,并按照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

1 个答案:

答案 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表的短名ur。对这些表中列的引用前面带有别名和点(句点)。