Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.20;
Скачать: CL | DM;

Вниз

Построение отчета   Найти похожие ветки 

 
sumrak   (2002-12-25 18:04) [0]

У меня есть таблица на основе которой требуется построить отчет. Но для этого снчала нужно сделать два запроса к этой таблице (Query1 и Query2), а потом на основе этих запросов уже строить окончательный отчет с помощью запроса Query3. Скажите как мне лучше это сделать, чтоб это работало побыстрее. У меня из вариантов только создание промежуточных таблиц (по запросам Query1 и Query2), после чего формирование отчета на основе них с помощью запроса Query3. Есть ли более изящные варианты?
Если нет, то подскажите как заполнить таблицу данными, полученными по запросам Query1 и Query2.

Заранее благодарен.


 
MsGuns ©   (2002-12-25 20:00) [1]

Как можно судить об оптимизации запросв, не видя в глаза самих запросов и не представляя даже отдаленно суть решаемой задачи ?

Какую таблицу надо заполнять данными, "полученными по запросам Query1 и Query2" ? Какие данные в этих таблицах ? Это что, типа "Пойди туда-не знаю-куда - принеси то-не знаю что" ?



 
sumrak   (2002-12-25 20:33) [2]

Таблица, по которой нужно сделать отчет имеет следующую структуру:
номер записи - Number (integer)
Дебетовый счет - DtChet (alpha)
Название по дебету - DtAnal (alpha)
Кредетовый счет - KrChet (alpha)
Название по кредиту - KrAnal (alpha)
Сумма - Summa (money)
и некоторые другие поля (дата, номер док-та...)

Query1: (Вытаскиваю записи с 60-м дебетовым счетом)
INSERT INTO suppl(Number, DtChet, DtAnal, KrChet, KrAnal, Summa)
SELECT Number, DtChet, DtAnal, KrChet, KrAnal, Summa
FROM postavki
WHERE DtChet="60"

Query2: (Вытаскиваю записи с 60-м кредитовым счетом)
INSERT INTO shop(Number, DtChet, DtAnal, KrChet, KrAnal, Summa)
SELECT Number, DtChet, DtAnal, KrChet, KrAnal, Summa
FROM postavki
WHERE KrChet="60"

На основе созданных таблиц делаю следующий запрос:
SELECT Sp.DtAnal, Sp.KrChet, Sp.KrAnal, Sp.Summa AS SmSp, Sh.Summa AS SmSh
FROM shop Sh, suppl Sp
WHERE Sp.DtChet=Sh.KrChet AND Sp.DtAnal=Sh.KrAnal
GROUP BY Sp.DtAnal, Sp.KrChet, Sp.KrAnal, SmSp, SmSh

В итоге мне нужно получить отчет вида:
DtAnal | KrChet | KrAnal | SmSp-SmSh

В общем-то используя вышеприведенные запросы я этого добиваюсь, но может быть есть более оптимальное решение этой проблемы?


 
ЮЮ ©   (2002-12-26 03:13) [3]

зачем в последнем запросе GROUP BY ,если нет ни одной аггрегатной функции ?.

Т.к. в первом и во втором запросе каждая запись уникальна по паре полей (Sp.DtChet, Sp.DtAnal) в первом и (Sh.KrChet, Sh.KrAnal) во втором и каждой записи в одном запросе соответствует ровно одна в другом, то почему не сделать сразу один запрос:

SELECT Number, DtChet, DtAnal, KrChet, KrAnal, Summa
FROM postavki Sp, postavki Sh
WHERE Sp.DtChet=Sh.KrChet AND Sp.DtAnal=Sh.KrAnal
AND Sp.DtChet="60" AND Sh.KrChet=Sp.DtChet





 
MsGuns ©   (2002-12-26 12:15) [4]

SELECT Sp.DtAnal, Sp.KrChet, Sp.KrAnal, Sp.Summa-Sh.Summa Summa
FROM postavki Sp, postavki Sh
WHERE Sp.DtChet=Sh.KrChet AND Sp.DtAnal=Sh.KrAnal
AND Sp.DtChet="60" AND Sh.KrChet=Sp.DtChet






Страницы: 1 вся ветка

Текущий архив: 2003.01.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.028 c
14-62774
Сатир
2002-12-28 13:33
2003.01.20
Задача для разминки мозгов - практичный вариант


4-62937
Cosmic
2002-11-15 18:51
2003.01.20
Как отловить пароль?


4-62890
Разведчик
2002-12-01 23:51
2003.01.20
Работа с SysListView32?


1-62597
Gadfly
2003-01-09 09:34
2003.01.20
Форматирование ячеек в Excel


14-62763
Дмитрий К.К.
2002-12-29 19:15
2003.01.20
В сборной мира пополнение!