Главная страница
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.021 c
6-62708
kofman
2002-11-20 21:22
2003.01.20
Как добавит свой пункт в контекстное меню MSIE?


1-62497
grab3
2003-01-10 13:17
2003.01.20
Вопросец


7-62858
sural
2002-11-02 08:41
2003.01.20
Как точно узнать размер памяти на видеокарте?


14-62808
Шишкин Илья
2002-12-31 11:52
2003.01.20
Сколько может стоить


6-62709
VS2001
2002-11-22 06:39
2003.01.20
Многопоточная закачка по ФТП протоколу