получить самую раннюю дату для каждого идентификатора - PullRequest
1 голос
/ 11 мая 2011

с учетом следующего

table1
id,name
1,test1
2,test2
3,test3

tablePrt
id,date
1,5/1/11
1,5/3/11
3,3/1/11

tableOnl
id,date
1,5/4/11
1,5/15/11

tableSrv
id,date
1,5/13/11
1,5/1/11
2,4/1/11

как можно получить единственную самую раннюю дату для каждого идентификатора из всех трех таблиц плюс имя идентификатора, который находится в таблице1?

поэтому результат сверху должен выглядеть следующим образом:

test1, 5/1/11
test2, 4/1/11
test3, 3/1/11

1 Ответ

3 голосов
/ 11 мая 2011
SELECT t1.id, 
       MIN(tbls.DATE) 
FROM   table1 t1 
       INNER JOIN (SELECT id, 
                          DATE 
                   FROM   tableprt 
                   UNION ALL
                   SELECT id, 
                          DATE 
                   FROM   tableonl 
                   UNION ALL
                   SELECT id, 
                          DATE 
                   FROM   tablesrv) tbls 
         ON t1.id = tbls.id 
GROUP  BY t1.id 

Примечание: здесь не нужно делать UNION ALL Как заметил Мартин, хотя UNION ALL не требуется, это может быть быстрее

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