Я сделал дизайн базы данных для небольшой системы CRM. Он состоит из компаний и собраний (среди прочих).
Компания имеет поля:
ID (основной, auto_inc)
Имя (текст)
Встречи имеет поля:
ID (основной, auto_inc)
CompanyId (ссылка на Companies.ID)
WhenTime (дата и время, чтобы сохранить, когда встреча была)
Заметки (текст о встрече)
То, что я хочу выполнить, - это запрос, который дает мне список всех компаний (все поля в таблице), И Время и Примечания последней встречи с этой компанией (последняя - это максимум (Когда время), и если есть Нет, NULL подойдет).
Я думаю, что могу решить это с помощью курсоров, но я боюсь скорости.
Я попробовал несколько составов Group By, но боюсь, что мне не хватает изящества.
Моя последняя попытка была такой:
select Companies.ID, Companies.name, mts.whentime, mts.notes
from Companies
left outer join (
select top(1) *
from Meetings
order by [whentime] desc
) mts
on Companies.ID = mts.companyID
order by Companies.name asc
но этот код принимает только один кортеж от Meetings, а не один на каждую компанию в объединении, так что это бесполезно.
Есть идеи?