[英]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.