有3个表 :m,t,s m表: 
uid tid sid time..... t表 
tid类别ID tname类别名称 .... s表: 
sid物品ID tid物品所属类别 sname物品名称 ..... 我想查询出m表里uid=1的记录,同时查询出字段:g.gname,s.sname.将结果按照类别tid倒序分组,每组超过3条的只要按时间倒序前3条 比如: 
tid  tname  sid  sname    time 
9    t9    4    s4      00-00-10 
9    t9    9    s9      00-00-5 
9    t9    5    s5      00-00-3 6    t6    10    s10      00-00-10 
6    t6    14    s14      00-00-7 4    t4    17    s17      00-00-10 
4    t4    16    s16      00-00-7 
4    t4    18    s18      00-00-4 

解决方案 »

  1.   


    select m.tid,n.tname,n.sid,s.nname,m.time from m left join ( select t.tid,t.tname,s.sid,s.sname from s left join t on s.tid=t.tid)n on m.tid=n.tid group by m.uid order by m.tid limit 0,3
      

  2.   

    g.gname,s.sname. --- g.gname是那里来的, 我是不是眼花了
      

  3.   

    没对的哈我查询的是uid=1的记录,按照t.tid倒序分组
    查询出的结果就象::tid  tname  sid  sname    time 
    9    t9    4    s4      00-00-10 
    9    t9    9    s9      00-00-5 
    9    t9    5    s5      00-00-3 6    t6    10    s10      00-00-10 
    6    t6    14    s14      00-00-7 4    t4    17    s17      00-00-10 
    4    t4    16    s16      00-00-7 
    4    t4    18    s18      00-00-4 
    高手麻烦看一下吧,帮个忙啊.我整了好久了,主要是关系太复杂了
      

  4.   

    看这条对不对?
    select t1.tid,t.tname,s.sid,s.sname,t1.time
    from m t1 left join t
    on t1.tid=t.id
    left join s
    on t1.sid=s.id
    where t1.uid=1 and 3>(select count(*) from m where tid=t1.tid and time>t1.time)
    order by t1.tid desc,t1.time desc;