Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2009, 15:23   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию запрос SQL - проблема составления

У меня вопрос по формированию запроса:
у меня есть результат запроса вида(1):
код 1 2 3 4 5 6 7
11 0 0 8 6 7 8 9
12 0 0 0 0 0 0 8
14 1 2 3 4 0 0 0
.......................

где (1,2,3,4,5,6,7)- дни недели
под ними значения из средней выручки по дням недели
есть таблицы: Sutki(dat-дата,dned-день недели)
s1(fstar-код,fndat-дата,sum-сумма выручки)
теперь вопрос как сформировать запрос чтобы результат выглядел както так:
код 01.02.2009 02.02.2009 03.02.2009 04.02.2009 05.02.2009 06.02.2009 07.02.2009 08.02.2009....28.02.2009
11 9 0 0 8 6 7 8 0 ....8
12 8 0 0 0 0 0 0 8.....0
14 0 1 2 3 4 0 0 0.....0
.......................
т.е. брало fndat - какой день недели (в месяце) из табл. sutki далее в соотв. с днем недели выводило среднюю сумму т.е. код маршрута =11 дата выезда = 04.02.2009 смотрим дату в табл сутки и видим что это была среда , далее сравниваем результат (1) в среду код 11 нам дал средннюю сумму =8 -> ставим 8... и. т. д. т.е. в итоге получиться должно в целом за месяц проставленные суммы ср.выручки по дням недели соотв. дате
я пыталась делать как то так:
Код:
TRANSFORM sum(Запрос2.s1) AS Запрос2_s1
SELECT Запрос2.fstar, sum(Запрос2.s1) AS IT
FROM Запрос2
WHERE s1.FNDat>=#2/1/2009# AND s1.FNDat<=#2/28/2009#
GROUP BY Запрос2.fstar
PIVOT s1.FNDat;
где Запрос 2 это Запрос вида:

Код:
SELECT Round(Avg(s1.FVIRWN+s1.FVIRLN+s1.FVIRWV+s1.FVIRLV)) AS s1, s1.Fstar, SUTKI.DNED, s1.FNDat
FROM s1, SUTKI
WHERE (((s1.FNDat)=[SUTKI].[DAT]))
GROUP BY s1.Fstar, SUTKI.DNED, s1.FNDat;
но у меня получилось то же самое что и рез(1) но по датам ... а как правильно сделать не могу додумать .
Если кому не сложно напишите пожалусто как правильно можно написать запрос чтобы получился нужный результат.
Заранее огромное спасибо за помощь!
Tanuska___:) вне форума Ответить с цитированием
Старый 24.02.2009, 23:02   #2
Антон Ю.Б.
Форумчанин
 
Регистрация: 03.01.2009
Сообщений: 116
По умолчанию

С усталости тяжко думать, но по созвучности - Вас не это же интересует? - http://www.programmersforum.ru/showt...242#post202242
Антон Ю.Б. вне форума Ответить с цитированием
Старый 26.02.2009, 09:34   #3
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

я разобралась (использовала Transform + еще 1 запрос)
получилось как то так:
Код:
//Доп запрос (прописала в св-ве SQL компонента adoquery5)
SELECT m.Fstar, k.FNDat, m.s1
FROM [SELECT VODITXR.Fstar, Round(Avg(VODITXR.FVIRWN+VODITXR.FVIRLN+VODITXR.FVIRWV+VODITXR.FVIRLV)) AS s1, SUTKI.DNED
FROM VODITXR, SUTKI
WHERE VODITXR.FNDat=SUTKI.DAT 
GROUP BY VODITXR.Fstar, SUTKI.DNED]. AS m, [SELECT VODITXR.Fstar, SUTKI.DNED, VODITXR.FNDat
FROM VODITXR, SUTKI
WHERE  ((SUTKI.DAT)=VODITXR!FNDat) and ( VODITXR.FNDat>=:d1 AND VODITXR.FNDat<=:d2)
GROUP BY VODITXR.Fstar, SUTKI.DNED, VODITXR.FNDat]. AS k
WHERE (k.DNED  Like m.DNED)
GROUP BY m.Fstar, k.FNDat, m.s1
и в делфи результирующий запрос:
Код:
tex:=' TRANSFORM Avg(s.s1) AS [Avg-s1]'+
     '   SELECT s.Fstar, sum(s.s1) AS it '+
    '   FROM ('+ADOQuery5.SQL.Text +') s   '+
    '   GROUP BY s.Fstar '+
    '   PIVOT s.FNDat';
у меня база Access (*.mdb)
запрос работает отлично но долго на 2000 записей тратит где-то 1 минуту...
если кто видит как можно ускорить обработку данных большое спасибо!(если мне расскажет конечно )
Tanuska___:) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос - проблема с датой Serval Помощь студентам 2 22.01.2009 19:35
запрос sql sleeper_Izh SQL, базы данных 2 20.06.2008 11:27
SQL-запрос student_63 БД в Delphi 0 04.06.2008 21:13
SQL-запрос Alexey_vyb БД в Delphi 4 22.05.2007 18:52
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15