[MSSQL2005] LEFT JOIN с 0..1 записью, без подзапроса
От: baranovda Российская Империя  
Дата: 10.02.10 08:08
Оценка:
Сабж. Затмение какое-то нашло, не могу сообразить, как это сделать.

Пример: человек имеет несколько документов.

Persons

Person_ID
----------
1
2
3
4

Documents

Person_ID | Document_ID
------------------------
1         | 1
1         | 2
2         | 3
2         | 4
2         | 5
3         | 6


В результирующей выборке должны присутствовать все идентификаторы из Persons и хотя бы один (пусть даже первый попавшийся) из Documents.

Подзапросами типа

select 
  p.Person_ID, 
  (select top 1 d.Document_ID from Documents d where d.Person_ID = p.Person_ID) as Document_ID
from Persons p


задача решается, но такими подзапросами нужно выгрести около 30 полей, и код становится неопрятненьким.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.