加入两张桌子并获取最新日期。

时间:2012-03-05 13:53:56

标签: php mysql date compare max

我是这个表格的新手,希望我能得到一些非常棒的帮助!

我有三张桌子

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
我现在已经挣扎了好几天了,无法解决这个问题。 应用。任何帮助!感谢名单。

1 个答案:

答案 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