Запросы: объединить результаты нескольких запросов в другом запросе в строчку

Ukraina
Дата: 15.09.2005 16:12:25
Господа!

Создал 8-мь Запросов «Р1» … «Р8», результатами которых является одна запись (числовые значения):
Р1: 1267
Р2: 3467
Р2: 3468
…
Р6: NULL (отсутствуют результаты)
Р7: NULL (отсутствуют результаты)
Р8: NULL (отсутствуют результаты)
Необходимо было получить «объединение» этих результаты в некий запрос в одну строку, т.е. получить результат в таком виде

Р1        Р2         Р3        Р4    Р5     Р6     Р7     Р8
1267    3467         3468        67       89      0       0        0
Для этого попытался создать новый запрос на основе всех этих запросов

SELECT [Р1].Q, [Р2].Q, [Р3].Q, [Р4].Q, [Р5].Q, [Р6].Q, [Р7].Q, [Р8].Q
FROM Р1, Р2, Р3, Р4, Р5, Р6, Р7, Р8; 
Результат не получился

Для того, чтобы выкрутится, сделал следующее: создал вопрос на объединение

SELECT Q as QBSI, 0 AS QBSN, 0 AS QALI,0 AS QALN,0 AS QDSI,0 AS QDAN,0 AS QGAI,0 AS QGAN from Р1
union all select 0, Q ,0,0,0,0,0,0  from Р2
union all select 0, 0,Q ,0,0,0,0,0  from Р3
union all select 0, 0,0,Q,0,0,0,0  from Р4
union all select 0,0,0,0,Q,0,0,0 from Р5
union all select 0,0,0,0,0,Q,0,0 from Р6
UNION ALL select 0,0,0,0,0,0,Q,0 from Р7
UNION ALL select 0,0,0,0,0,0,0,Q from Р8;
Получил результат с некоторым ненужным количеством нулей, потом на основе этого запроса на объединение создал новый запрос на группировку по суммированию и получил нужный результат…

Есть ли более «дешевый» способ объединения результатов нескольких запросов в другом «в строчку», именно в строку?
NG
Дата: 15.09.2005 16:44:44
Я-бы просто добавил в каждый из запросов по одному ключевому полю (прописав одинаковые значения, например 1), по которому и объединил-бы их.
SELECT P1.Q ... P8.Q
FROM (P1 INNER JOIN P2 ON P1.K=P2.K)
....
(INNER JOIN P8 ON P1.K =P8.K)
АлексейК
Дата: 15.09.2005 17:02:42
в любой запрос возвращающий одну строку вставить 8 функций свою или dlookup
adv
Дата: 15.09.2005 17:03:54
select "p1" AS p1, "p2" AS p2, ....
FROM p1
union
SELECT (select * from p1) AS p1, (select * from p2) AS p2, ...
FROM p1 order by p1 desc;
если p1 может бе записей, то в from лучше использовать любую не пустую таблицу.
Ukraina
Дата: 15.09.2005 18:32:40
Все методы работают, но есть одна бяка, не дай Бог в каой-либо запросе будет NULL, то все летит к черту...
NG
Дата: 15.09.2005 20:12:09
Модификация метода, предложенного мной, должна решить проблему. Суть модификации:
1) добавить 9 запрос (или таблицу) с одним "ключевым" полем, содержащем константу;
2) в 10 запросе связываем это "ключевое" поле внешним объединением со всеми "ключевыми" полями остальных 8 запросов. Разумеется, значения в этих полях должны совпадать.
Успехов!
NG
Дата: 15.09.2005 20:25:08
В догонку. Проверил, работает.
NG
Дата: 15.09.2005 22:14:38
2 Ukraina
Проверил свое первое решение (пост в 16:44) -- работает и с NULL. См. картинку. Успехов!
adv
Дата: 16.09.2005 11:13:44
мой тоже работает с null без проблем.