MySQL запрос на последнюю дату - PullRequest
0 голосов
/ 30 апреля 2010

Я выполняю этот запрос

SELECT sh.*,
       u.initials AS initals
  FROM database1.table1 AS sh
  JOIN database2.user AS u ON u.userID = sh.userid
 WHERE id = 123456
   AND dts = ( SELECT MAX(dts) from database1.table1 ) 
ORDER BY sort_by, category

В таблице1 у меня есть такие записи

dts                           status                    category         sort_by
2010-04-29 12:20:27        Civil Engineers          Occupation 1 
2010-04-28 12:20:27        Civil Engineers          Occupation 1 
2010-04-28 12:20:54 Married             Marital Status 2      2010-04-28 12:21:15 Smoker             Tobbaco    3
2010-04-27 12:20:27        Civil Engineers          Occupation 1 
2010-04-27 12:20:54 Married             Marital Status 2      2010-04-27 12:21:15 Smoker             Tobbaco    3
2010-04-26 12:20:27        Civil Engineers          Occupation 1 
2010-04-26 12:20:54 Married             Marital Status 2      2010-04-26 12:21:15 Smoker             Tobbaco    3

Если вы посмотрите на мои данные, я выбираю самую последнюю запись по категориям и sort_id. однако в некоторых случаях, например 29-го (2010-04-29 12:20:27), у меня есть только одна запись. Так что в этом случае я хочу показать профессию для последних, а затем для остальных (последние). Но в настоящее время отображается только одна строка.

1 Ответ

1 голос
/ 30 апреля 2010

стараясь как можно лучше угадать, что у вас есть, ваш запрос должен был бы быть так или иначе скорректирован, что-то вроде

SELECT 
      sh.dts,
      cast( if( preAgg1.totalPerCatSort = 1, sh.status, ' ' ) as char(20))
          as SingleStatus,
      sh.category,
      sh.sort_by, 
      u.initials AS initals 
   FROM 
      database1.table1 AS sh,
      database2.user AS u,
      ( select 
              t1.category, 
              t1.sort_by, 
              max(dts) maxdts,
              count(*) totalPerCatSort
           from 
              database1 t1
           group by 
              t1.category, 
              t1.sort_by ) preAgg1
   WHERE
         sh.userid = u.userID 
     and sh.sort_by = preAgg1.sort_by
     and sh.category = preAgg1.category
     and sh.dts = preAgg1.maxdts
     and id = 123456  ?? Should this actually be the UserID column ??
  ORDER BY 
     sort_by, 
     category 

возможно, вам придется применить «ID = 123456» в подвыборе «preAgg1», но, опять же, вы не уверены, к какому идентификатору применим этот столбец / таблица, в противном случае вы могли бы иметь другие записи даты другими «пользователями». "и не то же самое для одного кандидата, которого вы ищете ... Ваш звонок.

Если вы хотите получить ВСЕ записи, я бы просто удалил ваш квалификатор "and ID = 123456", и все должно быть в порядке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...