Php mysql查询,根据最新时间戳获取最小值

Php mysql查询,根据最新时间戳获取最小值,php,mysql,sql,Php,Mysql,Sql,嗨,我试图找到一个查询的解决方案,以获得最小值以及最新的时间戳 我有以下几张表 表1 sno user_id name subject rank Timestamp 1 10 SS maths1 1 2014-12-05 17:24:33 2 10 SS maths2 2 2014-12-05 17:24:33 3 10 PH phy1 3 2014-12-05 17:24

嗨,我试图找到一个查询的解决方案,以获得最小值以及最新的时间戳

我有以下几张表

表1

sno user_id   name subject  rank         Timestamp
 1    10      SS   maths1  1     2014-12-05 17:24:33 
 2    10      SS   maths2  2     2014-12-05 17:24:33
 3    10      PH   phy1    3     2014-12-05 17:24:33
 4    10      PH   phy2    4     2014-12-05 17:24:33
 5    10      SS   maths1  2     2014-12-04 17:24:33 
 6    10      SS   maths2  1     2014-12-04 17:24:33
 7    10      PH   phy1    3     2014-12-04 17:24:33
 8    10      PH   phy2    4     2014-12-04 17:24:33
表12

sno  name  Status
1     SS    Active
2     PH    ACtive
3     So    Inactive
所以我试图得到以下结果

 sno userid   name   subject  rank         timpestamp
     1    10      SS   maths1  1     2014-12-05 17:24:33 
     2    10      PH   phy1    3     2014-12-05 17:24:33
到目前为止,我尝试了这个查询,我能够获得具有不同名称的主题的最新时间和最低排名值。 但它们彼此不连接意味着我从其他行获得最晚的时间戳和最小的值。请帮我解决这个问题

SELECT DISTINCT(T1.`name`), 
       T1.`user_id`,
       T1.`subject`, 
       MAX(T1.`Timestamp`) as latest_Timestamp, 
       MIN(T1.`rank `) as rank   
FROM Table1  T1,Table2 T2  
where T1.`user_id`='10' 
AND  T2.`status` = 'Active' 
AND T1.`name` = T2.`name`  
GROUP BY T1.`exercise_id`
ORDER BY T1.`quality_id`, T1.`Timestamp` ASC

关系数据库在集合上运行良好。因此,请考虑不同集合中的数据

  • 您需要一个组合t1和t2的集合
  • 您需要t1的子集,该子集只包含每个用户Id和名称的最小秩和最大时间戳
因此T1和T2被连接起来,生成所需的数据和列的集合。然后,我们加入包含子集的子查询,以过滤出所需的非最大时间戳和非最小秩

SELECT T1values.name, 
       T1values.user_id,
       T1values.subject, 
       T1values.rank,
       T1values.timestamp
FROM Table2 T2
INNER JOIN table1 t1Values
  ON t1values.sno = t2.sno
 and t2.status='Active'
INNER JOIN (SELECT user_Id, name max(timestamp) maxTime, min(rank) Mrank 
            FROM Table1 
            GROUP BY user_Id, Name) T1
 ON t1.name = T1values.name
and t1.user_Id = t1values.user_ID
and t1.maxTime = T1Values.timestamp
and t1.rank = T1values.mrank
WHERE T1values.user_id='10' 
ORDER BY T1values.quality_id, T1values.Timestamp ASC

在我看来,您希望每个用户具有最新时间戳的最高排名,否则排名2应显示为排名4。这是正确的吗??但它们都是活动的,所以不用担心t2Hi xQbert我尝试了你的查询,但它在所有方面都不起作用。