有3个表 内容表 下载表 收藏表
内容表
id
addtime
content
title
add_user下载表
did
id
d_addtime
downuser
收藏表
cid
id
c_addtime
shouuser想读取3个表的内容如下
SELECT * FROM (内容表 n LEFT JOIN 下载表 x ON n.id=x.id) LEFT JOIN 收藏表 c ON c.id=n.id 
WHERE (n.add_user='admin' OR x.downuser='admin' OR c.shouuser='admin')
ORDER BY n.addtime DESC,x.d_addtime DESC,c.c_addtime DESC这样的SQL查询结果就是 
发布人admin 的发布内容 收藏的内容 下载的内容 的 联合结果但是排序想变成   n.addtime x.d_addtime c.c_addtime 这三个表的时间合并的 排序就是说  得到admin这个用户 的 最近都做了什么 如何按照时间顺序 将这个 联合 结果重新排序

解决方案 »

  1.   

    n.addtime x.d_addtime c.c_addtime 这三个表的时间合并的排序//这是什么意思?你把需要的结果格式贴出来看看
      

  2.   

    内容表
    id      addtime       content    title     add_user
    1       2006-07-02    内容1      标题1     admin
    2       2006-08-02    内容2      标题2     master
    3       2006-09-02    内容3      标题3     aaa
    4       2006-10-02    内容4      标题4     admin
    收藏表
    did  id     d_addtime   downuser
    1    3      2006-11-02  admin
    2    3      2006-11-02  master下载表cid   id    c_addtime    shouuser
    1     2      2006-11-01  admin
    2     1      2006-11-05  master现在得到的结果是
    id  addtime     add_user  did   d_addtime   downuser  cid  c_addtime    shouuser
    1   2006-07-02  admin 
    4   2006-10-02  admin
    3   2006-09-02  aaa        1     2006-11-02  admin
    2   2006-08-02  master                                 1   2006-11-01    admin
    以上数据就是得到的结果,但排序不正确想得到这样的结果id  addtime     add_user  did   d_addtime   downuser  cid  c_addtime    shouuser
    3   2006-09-02  aaa        1     2006-11-02  admin
    2   2006-08-02  master                                 1   2006-11-01   admin
    4   2006-10-02  admin
    1   2006-07-02  admin 
      

  3.   

    现在得到的结果是
    id addtime add_user did d_addtime downuser cid c_addtime shouuser
    2006-07-02 admin  -   -         -        -    -        -
    2006-10-02 admin  -   -         -        -    -        -
    3 2006-09-02 aaa 1 2006-11-02 admin        -    -        -   
    2 2006-08-02 master -   -         -        1   2006-11-01 admin
    以上数据就是得到的结果,但排序不正确想得到这样的结果id addtime add_user did d_addtime downuser cid c_addtime shouuser
    3 2006-09-02 aaa 1 2006-11-02 admin        -    -        -   
    2 2006-08-02 master -   -         -        1   2006-11-01 admin
    2006-10-02 admin  -   -         -        -    -        -
    2006-07-02 admin  -   -         -        -    -        -
    就是说 以时间为顺序 
    排列 内容表.add_user='admin' OR 下载表.downuser='admin' OR 收藏表.shouuser='admin'的结果
    但他们的时间字段是不同的 
    内容表.addtime 下载表.d_addtime 收藏表.c_addtime DESC
    SQL如何改写
    SELECT * FROM (内容表 n LEFT JOIN 下载表 x ON n.id=x.id) LEFT JOIN 收藏表 c ON c.id=n.id 
    WHERE (n.add_user='admin' OR x.downuser='admin' OR c.shouuser='admin')
    ORDER BY n.addtime DESC,x.d_addtime DESC,c.c_addtime DESC