Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Вниз

Сложно разобраться. прошу помощи!!!   Найти похожие ветки 

 
ViktorZ ©   (2006-08-10 20:57) [0]

Уважаемые форумяне. У меня громоздкая задача. Попытаюсь изложить ее понятно.
Цель всей задачи: выбрать нужные данные и передать их в EXCEL
СУБД: PARADOX
SQL::LocalSQL
BDE
DELPHI7
Есть файл .sql  в нем Запрос:

SELECT  d3.Name NAME,SUM(D2.Qnt*D2.RealPrice) AS SUMMA,
d3.CARD CARD,
D.LogicDate LogicDate,
D1.Sifr Sifr,
D4.Categ CAteg
FROM ":T4:ACheck" D, ":T4:ADCheck" D1, ":T4:ARcheck" D2, ":T4:CARDS" d3, ":T4:Menu" D4,":T4:Apcheck" V
WHERE
(D1.Sys_Num = D.Sys_Num) AND (V.Sys_Num=D1.Sys_Num)  AND (V.Curency=4)  AND (D2.Sys_Num = D1.Sys_Num)  AND (D1.CardCod=d3.CARD )  AND (D4.Sifr = D2.Sifr)
Group by CARD,NAme,LogicDATe,Sifr,CAteg,Curency

Так где то на 4 алиасов до Т9.

Далее идут два запроса (у меня на форме два разлиных Квери)
1)INSERT INTO ":SEN:Total"(Card,OST) SELECT F.CArd,F.SUMMA
FROM ":T4:fgh.sql" F
WHERE F.CAteg<>:P1 AND F.Sifr=:P2 AND F.LogicDate between :P3 AND :P4
2) INSERT INTO ":SEN:Total"(CArd,SUMMA) SELECT F.CArd,F.SUMMA FROM ":T4:fgh.sql" F
WHERE F.CAteg=:P1 AND F.Sifr=:P2 AND F.LogicDate between :P3 AND :P4

далее делаю следующее
***********************************
INSERT INTO ":SEN:Final"(Name,CArdCode,OST,SUMMA,Itogo,SkidkaSumma,SkidkaOst,SkidkaItogo)
SELECT C.NAME,T.CARD,SUM(T.OST),SUM(T.SUMMA) ," SUM(T.OST)+ SUM(T.SUMMA) AS ITOGO , (SUM(T.SUMMA)*(:skidka20))/100 AS SKIDKA20, (SUM(T.OST)*(:skidka10)/100) AS SKIDKA10," +
" (SUM(T.OST)*(:skidka10)/100) + (SUM(T.SUMMA)*(:skidka20))/100  AS ITOGOSKIDKA
FROM  ":SEN:CArds" C, ":SEN:Total" T
WHERE C.Card=T.CARD Group By C.Name , T.CARD
HAVING  SUM(T.OST) BETWEEN :sumsk1 AND :sumsk2 AND SUM (T.SUMMA) BETWEEN :sumost1 AND  :sumost2
*******************************************
Далее
UPDATE ":SEN:Final" SET SUMMA=0,SkidkaSumma=0 WHERE SUMMA IS NULL OR SkidkaSUMMA IS NULL - это для того чтобы убрать пустые ячейки в таблице

Ну и наконец
SELECT C.Name, P.CArdCode, P.OST , P.SUMMA  ," SUM( P.OST + P.SUMMA) ,P.SkidkaSumma , P.SkidkaOST," SUM(P.SkidkaSumma + P.skidkaOST)  FROm ":SEN:Final" P,":SEN:Cards" C
WHERE " C.Card=P.cardCode  Group By c.Name,P.cardCode,P.OST , P.SUMMA  ,P.SkidkaOST ," P.SkidkaSumma ORDER By CArdCode

ТЕПЕРЬ вопросы:
1) Возможно это как то оптимизировать
2) Там где обведено звездочками как сделать так чтобы в таблицу записались только те данные которые находятся между Between включая крайние пределы. То есть берем во внимание общий расход.
Пример:
SUM(T.OST) = 0, SUM(T.SUMMA)=1500 =OK
SUM(T.OST) = 1500, SUM(T.SUMMA)=1500 OK
SUM(T.OST) = 2000, SUM(T.SUMMA)=1500 FALSE
В общем суммы должны быть обе до 1999.
ЗАРАНЕЕ СПАСИБО.


 
Mike Kouzmine ©   (2006-08-10 21:52) [1]

Суть вопроса в чем? Если как передать данные в Ексел, то есть статьи на этом сайте. А если нет, то еще раз, помедленнее, я записываю...


 
Furyz ©   (2006-08-10 22:17) [2]

Задача грандиозная особенно для ветки начинающих ,
Это даже для среднего программиста сложновато.
Возможно это как то оптимизировать?
врятли , а что оно глючит?


 
Mike Kouzmine ©   (2006-08-11 00:24) [3]

Furyz ©   (10.08.06 22:17) [2] Точно. Это обязательно надо мастерам почитать.


 
ViktorZ ©   (2006-08-11 09:01) [4]

INSERT INTO ":SEN:Final"(Name,CArdCode,OST,SUMMA,Itogo,SkidkaSumma,SkidkaOst,SkidkaItogo)
SELECT C.NAME,T.CARD,SUM(T.OST),SUM(T.SUMMA) ," SUM(T.OST)+ SUM(T.SUMMA) AS ITOGO , (SUM(T.SUMMA)*(:skidka20))/100 AS SKIDKA20, (SUM(T.OST)*(:skidka10)/100) AS SKIDKA10," +
" (SUM(T.OST)*(:skidka10)/100) + (SUM(T.SUMMA)*(:skidka20))/100  AS ITOGOSKIDKA
FROM  ":SEN:CArds" C, ":SEN:Total" T
WHERE C.Card=T.CARD Group By C.Name , T.CARD
HAVING  SUM(T.OST) BETWEEN :sumsk1 AND :sumsk2 OR SUM (T.SUMMA) BETWEEN :sumost1 AND  :sumost2
Выдает не то, то есть если хотя бы одна подходит то пишет.

Пишу AND, не дает те, которые нулевые.А нужен общий вывод всех до 1999.

>Суть вопроса в чем?
Для особо ВНИМАТЕЛЬНЫХ, там Русским по серому написано: ТЕПЕРЬ вопросы.


 
Mike Kouzmine ©   (2006-08-11 12:54) [5]

ViktorZ ©   (11.08.06 09:01) [4] То, что ты написал - филькина грамота.
Начать надо не так.
1. Тип базы (есть)
2. Структура (нет)
3. Задача (нет)
4. Как делаешь (вроде есть)
5. Какие ошибки (нет)

А сейчас твой опус выглядит аналогично:
У меня есть машина.
А теперь вопрос - как сделать чтобы она ездила?


 
stone ©   (2006-08-11 13:01) [6]


> UPDATE ":SEN:Final" SET SUMMA=0,SkidkaSumma=0 WHERE SUMMA
> IS NULL OR SkidkaSUMMA IS NULL - это для того чтобы убрать
> пустые ячейки в таблице

А тепеперь внимательно посмотри на свой запрос и подумай, что будет если SUMMA > 0,а SkidkaSUMMA IS NULL или наоборот


 
Mike Kouzmine ©   (2006-08-11 13:05) [7]

stone ©   (11.08.06 13:01) [6] Достаточно по умолчанию нуль - и не нужно будет огород городить.


 
ViktorZ ©   (2006-08-11 14:13) [8]


> 2. Структура (нет)

Я не знаю конечно, но вроде из навзвания таблиц все понятно, их очень много и я если честно сам не знаю что некоторые значат мне написали что надо с ними сделать я и пытаюсь.

> 3. Задача (нет)

как сделать так чтобы в таблицу записались только те данные которые находятся между Between включая крайние пределы. То есть берем во внимание общий расход.
Пример:
SUM(T.OST) = 0, SUM(T.SUMMA)=1500 =OK
SUM(T.OST) = 1500, SUM(T.SUMMA)=1500 OK
SUM(T.OST) = 2000, SUM(T.SUMMA)=1500 FALSE
В общем суммы должны быть обе до 1999.
ЭТО ЧТО, пишу уже второй раз, разве это не задача?


> Какие ошибки (нет)-

Читай пост номер 4.

> Достаточно по умолчанию нуль - и не нужно будет огород городить.

Кажется недостаточно, я не помню но вроде из-за того что потом сложить нельзя будет.

> А тепеперь внимательно посмотри на свой запрос и подумай,
>  что будет если SUMMA > 0,а SkidkaSUMMA IS NULL или наоборот

ДА уж, затупил, занулит значит. ВОт это уже реально спасибо, начну отсюда копать.


 
MsGuns ©   (2006-08-11 15:57) [9]

>stone ©   (11.08.06 13:01) [6]
>А тепеперь внимательно посмотри на свой запрос и подумай, что будет если SUMMA > 0,а SkidkaSUMMA IS NULL или наоборот

Ну ты монстер ;)

ЗЫ: Пост [0] рекомендуется к прочтению на ночь


 
ViktorZ ©   (2006-08-11 16:08) [10]


> Ну ты монстер ;)
>
> ЗЫ: Пост [0] рекомендуется к прочтению на ночь

если честно не понял, даже хорошо это относительно меня или совсем плохо...


 
MsGuns ©   (2006-08-11 16:16) [11]

>ViktorZ ©   (11.08.06 16:08) [10]
>если честно не понял, даже хорошо это относительно меня или совсем плохо...

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


 
ViktorZ ©   (2006-08-11 19:23) [12]

>Для того, чтобы сфотографироваться на паспорт, не нужно чистить ботинки, гладить носки и садиться на коня
Причем здесь это, те надо в форексе работать, там тоже гвоорят много и долго и такими же словами, но дела ноль. Если ты так крут в программировании, то я думаю ты настолько же ничтожен например в игре в баскетбол. Нафига так закручивать? Я задал вопрос не для того чтобы мне на него ответили, для этого я прочитал статью как правильно их задавать и попытлся сделать как там, но похоже статья была написана давно, интерент сообщество изменилось;)


 
ViktorZ ©   (2006-08-12 08:00) [13]

разобрался, нужно было UPDATE ":SEN:Final" SET SUMMA=0,SkidkaSumma=0 WHERE SUMMA IS NULL OR SkidkaSUMMA IS NULL Правильно применнить для Таблицы Тотал.



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

Форум: "Начинающим";
Текущий архив: 2006.09.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.039 c
15-1154625987
Ketmar
2006-08-03 21:26
2006.09.03
pulsar engine


2-1155385177
apic
2006-08-12 16:19
2006.09.03
TListView


2-1155202342
ArtemESC
2006-08-10 13:32
2006.09.03
PopupMenu


15-1154954506
antonn
2006-08-07 16:41
2006.09.03
ищу музончик...


2-1155209189
Leyhont
2006-08-10 15:26
2006.09.03
SSH





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский