MS SQL2005, хитрый (для меня) запрос
От: newb  
Дата: 22.12.05 09:47
Оценка:
Есть три таблицы:
1. Actions: поля: ActionID (PK), Name
2. Groups: поля: GroupID (PK), Name
3. И связка между ними: Grants: поля: ActionID (FK на PK табл. Actions), GroupID (FK на PK табл. Groups), Period.
ActionID + GroupID — это PK для этой таблицы.


Нужен запрос (желательно без подзапросов) который для заданной группы будет делать следущее:
Для ВСЕХ записей из Actions выводит период (из табл. Grants, если есть запись для данного ActionID и GroupID, либо NULL)

Например:
Пусть в таблицах будут следующие данные:
1. Actions: {'A1', 'AAA'}, {'A2', 'BBB'}, {'A3', 'CCC'}, {'A4', 'DDD'}
2. Groups: {'G1', 'Group1'}, {'G2', 'Group2'}, {'G3', 'Group3'}
3. Grants: {'A1', 'G1', 123 }, {'A2', 'G2', 345}, {'A3', 'G2', 555}, {'A4', 'G3', 234}

Нужно получить след. рез-т:
Для 'G1' (GroupID идет параметром запроса):
'A1', 'AAA', 123
'A2', 'BBB', NULL
'A3', 'CCC', NULL
'A4', 'DDD', NULL

для 'G2' результат такой:
'A1', 'AAA', NULL
'A2', 'BBB', 345
'A3', 'CCC', 555
'A4', 'DDD', NULL

для 'G2' результат такой:
'A1', 'AAA', NULL
'A2', 'BBB', NULL
'A3', 'CCC', NULL
'A4', 'DDD', 234
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.