繁体   English   中英

MySQL加入4个表的最新更新

[英]Mysql join with latest update in 4 tables

嗨,这是我的桌子。

表网站

     sid  sname       uid
    ----  ----------  ----
       1  aaa.com      1
       5  bbb.com      1 

表格keyword_s

     kid  skeywoird       
    ----  ----------  
       1  word1    
       2  word2

桌上火柴

mid    uid    sid     kid       
----  ------  -----  -----
   1    1        1     1      
   2    1        1     2    

表等级

 mid   rank    dateon           url       
----  ------   -------         -----
   2     7    08-May-2014      bbb.com/a
   2     6    09-May-2014      bbb.com/2  

而我的查询

"SELECT 
    keywords_s.skeyword,
    keywords_s.kid,
    sites.sname,
    rank.rank,
    rank.url,
    rank.dateon
    FROM matchon
    Inner JOIN sites ON sites.sid = matchon.sid
    Inner JOIN keywords_s ON keywords_s.kid = matchon.kid
    Inner JOIN rank ON rank.mid = matchon.mid
    where matchon.uid = :uid and sites.sname = :sname and sites.deactive != '1'
    group by keywords_s.skeyword order by rank.rank
    "

我正在输出

rank   keyword    dateon        url       
----  ---------   -------      -----
   7   word2    08-May-2014    bbb.com/a

所需的输出是

rank   keyword    dateon        url       
----  ---------   -------      -----
   6   word2    09-May-2014    bbb.com/2

在这里我想得到...

第1组,由keyword_s.s.rank.rank排序(此关键字即将发布,但是)

按rank.slno desc排序二阶(无效)

(我需要二阶才能工作,所以我可以获得最新的排名和日期,按关键词分组和按等级排序)

SELECT keywords_s.skeywor
     , keywords_s.kid
     , sites.sname
     , rank.rank
     , rank.url
     , rank.dateon
FROM matchon JOIN sites ON sites.sid = matchon.sid
             JOIN keywords_s ON keywords_s.kid = matchon.kid
             JOIN rank ON rank.mid = matchon.mid AND
                          rank.dateon = (SELECT MAX(dateon) FROM rank WHERE mid =  matchon.mid)
WHERE matchon.uid = :uid and sites.sname = :sname and sites.deactive != '1'
GROUP BY keywords_s.skeyword order by rank.rank

这应该按照您的要求工作

"Select * from(SELECT keywords_s.skeyword, keywords_s.kid, sites.sname, rank.rank, rank.url, rank.dateon FROM matchon Inner JOIN sites ON sites.sid = matchon.sid Inner JOIN keywords_s ON keywords_s.kid = matchon.kid Inner JOIN rank ON rank.mid = matchon.mid where matchon.uid = :uid and sites.sname = :sname and sites.deactive != '1' order by rank.rank desc)xyz group by xyz.skeyword "

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM