按时间戳排序已按时间戳排序的mysql结果

时间:2012-05-31 11:41:12

标签: php mysql

你好我做了一个查询,其中首先从数据库中获取uid的朋友,并根据从数据库中获取通知。问题是假设用户a的两个朋友是用户b和用户c,那么他们的通知应该在我这样做的查询后出现

  

用户b更新了个人资料

     

用户c评论

     

用户b喜欢

     

用户c评级

这些是根据时间戳

排列的

但它的安排是为每个朋友分开时间戳

  

用户b喜欢

     

用户b更新了个人资料

     

用户c评论

     

用户c评级

我的代码

      $frndnoti=mysql_query("select friend_id from friend_list where uid=$id and status='1'");
while($bow=mysql_fetch_array($frndnoti))
{
$frnnid=$bow['friend_id'];

$sql3=mysql_query("select * from notification 
  where title_text='Global Notification'  
    and user_id in ($id , $frnnid)
   and owner_user_id=$frnnid 
   and is_seen=0  
   order by time_stamp DESC");

while($row=mysql_fetch_array($sql3))
{
      and so on.....

可以根据时间戳再次安排$ sql3的结果吗?被取出后?或以任何方式改进此查询?

3 个答案:

答案 0 :(得分:0)

经过长时间的思考并尝试我找出了它的rite查询,我在这里查询了这个问题,以便它可以帮助一些人后来卡住

$sql3=mysql_query("select n.*,f.friend_id,f.uid,f.status from notification
n,friend_list f  where f.uid='$id' and f.status='1' and n.title_text='Global 
Notification'   and n.user_id in ('$id' , f.friend_id)  and n.owner_user_id=f.friend_id
 and n.is_seen='0'  order by n.time_stamp desc");

while($row=mysql_fetch_array($sql3))

{
 and so on.....

答案 1 :(得分:0)

可能是因为您正在嵌套查询并通过friend_id将子查询结果插入到数组中。使用php在时间戳上对返回结构进行排序,或者使用一个查询来获取所有通知:

从通知中选择* 其中title_text ='全球通知' 和user_id = $ id或user_id in   (从friend_list中选择friend_id,其中uid = $ id和status ='1') 和owner_user_id in   (从friend_list中选择friend_id,其中uid = $ id和status ='1') 和is_seen = 0
按时间顺序排序DESC

虽然我不太喜欢那种因为重复的嵌套查询。

其他问题:

  • 查询中user_id和owner_user_id的用途是什么?
  • 如何将通知插入通知表?
  • title_text的目的是什么?
  • 拉动通知后是否设置了is_seen标志?是否再次需要通知?会更容易使用队列。

答案 2 :(得分:-1)

仔细检查time_stamp数据类型是时间戳。重命名专栏time_stamp,然后重试。如果这也行不通,可以选择使用PHP数组排序函数对数组进行排序。