Соедините две таблицы и получите самую последнюю дату. - PullRequest
0 голосов
/ 05 марта 2012

Я новичок в этой форме и надеюсь, что смогу получить отличную помощь!

Я получил три таблицы

1 "companies"
  ID 

2 "log"
  compid
  datum (date)

3 "sales" 
  datumnow (datetime)
  uppdaterad (datetime)

Я хочу сравнить журнал и продажи и получить самую последнюю или "самую новую" запись и отобразить список компаний ASC из таблицы 1 только с одной компаниейдля каждого ряда.(сравнивая данные, данные и данные и получая наибольшее значение даты, отображаемое в одной строке для каждого идентификатора компаний)

#RESULT 
Rover - 2012-01-15
Daniel - 2012-02-01
Damien - 2012-03-05

Я боролся с этим уже несколько дней и не могу удержатьсярешения.Приложение.Любая помощь!Thanx.

1 Ответ

0 голосов
/ 05 марта 2012

Вы можете использовать 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
...