Как получить максимальную дату из левого внешнего соединения? - PullRequest
2 голосов
/ 29 марта 2011

У меня есть 2 таблицы client_headquarter & клиентов

client_headquarter: ID

клиенты: id, штаб-квартира, имя клиента, tscreated

Я хочу показать всю штаб-квартиру и вместе с каждой штаб-квартирой показать «самого последнего» клиента (ts_created), если он существует, а на его месте есть пробел. Я хочу, чтобы все было отсортировано по штаб-квартире, в которой нет клиентов, старых клиентов и последних клиентов.

Может ли кто-нибудь помочь с этим запросом?

Ответы [ 3 ]

3 голосов
/ 29 марта 2011
SELECT client_headquarter.id, max(clients.tscreated)
FROM client_headquarter 
LEFT OUTER JOIN clients ON clients.headquarterid = client_headquarter.id
GROUP BY client_headquarter.id
ORDER BY MAX(clients.tscreated) ASC
0 голосов
/ 29 марта 2011
select 
    ch.id as [Headquarter ID],
    c.clientname as [Most Recent Client Name],
    c.tscreated as [Date Created]
from 
    client_headquarter ch
    left join 
    (select 
        headquarterid,
        max(tscreated)
    from
        clients
    group by
        headquarterid
    ) recent on recent.headquarterid = ch.id
    left join clients c on c.headquarterid = ch.headquarterid and c.tscreated = recent.tscreated
order by
    c.tscreated

Это создаст несколько строк для одного головного офиса, если у нескольких клиентов будет одна и та же дата создания.Если это нежелательно, то должны быть определены и реализованы некоторые явные средства определения победителя.

0 голосов
/ 29 марта 2011

Что-то вроде ..

> select chq.id, count(clientname), max(tscreated) from clients c
> left outer join client_headquarter chq on c.hearquarterid = chq.id
> group by chq.id
> order by count(clientname) DESC, max(tscreated) DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...