Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Использование нескольких запросов в 1 отчёте (http://forum.oszone.net/showthread.php?t=187489)

Darkvar 05-10-2010 18:17 1512090

Использование нескольких запросов в 1 отчёте
 
Доброго времени суток уважаемые.

Проблема такова: Access. Необходимо в 1 отчёт запихнуть результаты нескольких запросов. Запросы осуществляются к одной и той же таблице и при указании нескольких запросов в качестве "источника данных" для отчёта Access пишет "Выбраны поля из источников данных, к которым не удалось подключиться. Возможно выбраны, поля из таблицы и из запроса, основанного на этой таблице". Но я-то выбираю поля из только запросов, основанных на одной и той же таблице.

Подскажите пожалуйста возможные варианты решения проблемы.

Delirium 06-10-2010 01:18 1512426

Запросы возвращают множество значений или же по одному? Можно попробовать сделать еще один запрос, который будет включать в себя все нужные результаты. Не видя примерного желаемого результата и результата вывода запросов, тяжело думать, что можно придумать.

Darkvar 06-10-2010 11:11 1512572

Delirium, Запросы возвращают количество записей в таблице, удовлетворяющие определённому условия. Разные запросы - разные условия, но результат всегда один - число записей.
Пример такого запроса:

Код:

SELECT Count(Таблица1.[Поле1]) AS Выражение1
FROM Таблица1
WHERE ((Таблица1.[Поле1])="123" Or (Таблица1.[Поле1])="456");

Запрос возвращает результат вида:

Код:

Выражение1
<<Число записей удовлетворяющих условию>>

Таких запросов - около 10 штук. И необходимо запихнуть результаты этих запросов в таблицу в отчёте.

Delirium 07-10-2010 01:00 1513212

Ну так а в чем дело то тогда, пишем запрос, собирающий все запросы воедино, примерно так:

Код:

SELECT Запрос1.Expr1000, Запрос2.Expr1000, Запрос3.Expr1000
FROM Запрос1, Запрос2, Запрос3;

В результате получаем то, что нужно.

Darkvar 07-10-2010 10:41 1513387

Delirium, Спасибо большое за совет. Пытался сделать это же, но через конструктор запросов, но Access не давал использовать 2 запроса в качестве источника данных.

Delirium 07-10-2010 17:22 1513700

такие вещи всегда проще писать в режиме кода SQL, а то запросник Access часто не понимает, чего же от него хотят :)

Darkvar 07-10-2010 17:59 1513734

Delirium, согласен, но с SQL сталкиваюсь редко и туплю когда нужно реализовать незнакомую мне функцию :) .

Ещё такой вопросик: как можно просуммировать результаты такого "запроса по запросам" ?
Код:

SELECT Запрос1.Expr1000, Запрос2.Expr1000, Запрос3.Expr1000
FROM Запрос1, Запрос2, Запрос3;

Т.е. чтоб выводились результаты из Запрос1, Запрос2 и дополнительно выводилась сумма этих результатов. Т.е. если Запрос1 вернул результат "1", а Запрос2 - "2", чтоб выводилась сумма "3".
Не припомню такую функцию в SQL, в голову лезет только промежуточная таблица и SUM по столбцу результатов запросов... :unsure:

Delirium 08-10-2010 02:02 1514016

Код:

SELECT Запрос1.Expr1000, Запрос2.Expr1000, (Запрос1.Expr1000 + Запрос2.Expr1000) as СуммаЗапросов12, Запрос3.Exp1000
FROM Запрос1, Запрос2, Запрос3;

Все гораздо проще :)


Время: 05:44.

Время: 05:44.
© OSzone.net 2001-