PHP复杂的MySQL查询从不同的表计数

时间:2015-01-05 02:56:05

标签: php mysql

我正在建立一个网络/社交网站,我正在尝试创建一个功能,以便在您访问该网页时返回访问同一网页的用户。

如何从表中选择用户" USERS"通过对表中的user_id进行计数和分组" READING"?

数据库结构如下:

用户

  • USER_ID
  • 用户名
  • ...

阅读

  • ID
  • USER_ID
  • update_timestamp
  • ...

应该返回的是像这样的数组

user
  - user_id
  - user_name
  - user_first_name
  - ...
user
  - user_id
  - ...

这是我到目前为止的查询

  

SELECT r.user_id,u。* FROM读取r,用户u GROUP BY r.user_id AS count WHERE u.user_id = r.user_id ORDER BY count DESC

示例表

USERS

// user_id // user_name // user_email
-------------------------------------
    123    /   mentos   /  m@gmail.com
-------------------------------------
    321    / freshmaker / f@gmail.com
-------------------------------------
    231    /  hubba     /  h@gmail.com

阅读

//    id  //  user_id   //  timestamp
--------------------------------------
      1   /    123      /   201501050420
      2   /    321      /   201501050420

输出应该是什么

的示例
-ARRAY
  -user
     - 123
     - mentos
     - m@gmail.com
   -user
     - 321
     - freshmaker
     - f@gmail.com

1 个答案:

答案 0 :(得分:0)

你在找这样的东西吗?

SELECT u.*
  FROM 
(
  SELECT DISTINCT user_id
    FROM reading
   WHERE update_timestamp >= NOW() - INTERVAL 5 MINUTE -- or any other appropriate time interval
     AND user_id <> 4 -- depending on the logic you might want to exclude the current user itself
) q JOIN users u
    ON q.user_id = u.user_id

这是 SQLFiddle 演示