我是这个表格的新手,希望我能得到一些非常棒的帮助!
我有三张桌子
1 "companies"
ID
2 "log"
compid
datum (date)
3 "sales"
datumnow (datetime)
uppdaterad (datetime)
我想比较日志和销售并获取最新或“最新”条目,并显示表1中的ASC公司列表,每行只有一家公司。 (比较datum,datumnow& uppdaterad并获得公司每个ID在一行上显示的最高日期值)
#RESULT
Rover - 2012-01-15
Daniel - 2012-02-01
Damien - 2012-03-05
我现在已经挣扎了好几天了,无法解决这个问题。
应用。任何帮助!感谢名单。
答案 0 :(得分:0)
您可以使用GREATEST()
从这三列返回最近的日期。这假设您在sales
中有另一列与其他表相关。从上面显示的结构来看,这种关系并不清楚。
SELECT
companies.ID,
GREATEST(log.datum, sales.datumnow, sales.uppdatedad) AS mostrecent
FROM
companies LEFT JOIN log ON companies.ID = log.compid
/* Assumes sales also has a compid column. Will edit if new info is posted */
LEFT JOIN sales ON companies.ID = sales.compid
WHERE log.userid='$userID' AND sales.seller='$userID'
对于每个公司的最长日期只有一行,请使用MAX()
聚合GROUP BY
:
SELECT
companies.ID,
MAX(GREATEST(log.datum, sales.datumnow, sales.uppdatedad)) AS mostrecent
FROM
companies LEFT JOIN log ON companies.ID = log.compid
/* Assumes sales also has a compid column. Will edit if new info is posted */
LEFT JOIN sales ON companies.ID = sales.compid
WHERE log.userid='$userID' AND sales.seller='$userID'
GROUP BY companies.ID