Помогите с sql join - PullRequest
       10

Помогите с sql join

2 голосов
/ 31 октября 2008

У меня есть две таблицы:

Таблица 1: ID, PersonCode, Имя,

Таблица 2: ID, Table1ID, Местоположение, ServiceDate

У меня есть запрос, соединяющий таблицу 1 с таблицей 2 на table1.ID = table2.Table1ID, где PersonCode = 'XYZ'

Что я хочу сделать, это вернуть Table1.PersonCode, Table1.Name, Table2.Location, Table2.ServiceDate, я не хочу всех строк, В таблице 2 меня интересует только строка с самой последней ServiceDate для каждого места. Как мне это сделать?

Ответы [ 4 ]

3 голосов
/ 31 октября 2008

Примерно так:

SELECT
    Table1.PersonCode, Table1.Name, Table2.Location, MAX(Table2.ServiceDate)
FROM
    Table1 
    INNER JOIN Table2 on Table1.ID = Table2.Table1ID 
WHERE
    TABLE1.PersonCode = 'XYZ'
GROUP BY
    Table1.PersonCode,Table1.Name, Table2.Location
0 голосов
/ 31 октября 2008

Я бы использовал INNER JOIN и выбрал первую запись, упорядочив записи в обратном хронологическом порядке на основе Table2.ServiceDate.

SELECT TOP 1
    Table1.PersonCode, Table1.Name, Table2.Location, Table2.ServiceDate
FROM
    Table1 
    INNER JOIN Table2 on Table1.ID = Table2.Table1ID 
WHERE
    TABLE1.PersonCode = 'XYZ'
ORDER BY Table2.ServiceDate DESC
GROUP BY
    Table1.PersonCode,Table1.Name, Table2.Location
0 голосов
/ 31 октября 2008

Попробуйте:

select Table1.PersonCode,Table1.Name, Table2.Location, Table2.ServiceDate
from Table1
join Table2 on table1.ID = table2.Table1ID 
where table1.PersonCode = 'XYZ'
and table2.ServiceDate = (select max(t2.ServiceDate)
                          from   table2 t2
                          where  t2.table1ID = table2.table1ID
                          and    t2.location = table2.location
                         );
0 голосов
/ 31 октября 2008

Использовать MAX (ServiceDate)

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