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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2010, 20:44   #11
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

HyTech SQL Server СУБД, полный доступ есть. а так же есть порядка 2000-3000 тыс таблиц каждая содержит 100-200 полей. пока есть документация по таблицам этакая немаленькая книженция. пока разберешься во всем этом пройдет много времени. а требуют результаты в пятницу ))
wm_leviathan вне форума Ответить с цитированием
Старый 18.02.2010, 10:00   #12
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

если есть доступ полный, значит есть на чём протестить скрипты. попробуй прогнать вот такой скрипт:
Код:
 declare @sum1 as int,
 declare @sum2 as int

if exists (select tablica1.[поле с номером клиента] from [таблица с суммами] as tablica1, [таблица с номерами клиентов] as tablica2 
where tablica1.[поле с номером клиента]=tablica2.[поле с номером клиента]) begin
 selelct @sum1=sum(tabli1ca.[поле с суммами]) where tablica1.[поле с номером клиента]=tablica2.[поле с номером клиента] and tablica1.[поле с датой] between [дата начала месяца] and [дата конца месяца] end
 else if select @sum1=0

if exists (select tablica1.[поле с номером клиента] from [таблица с суммами] as tablica1, [таблица с номерами клиентов] as tablica2 
where tablica1.[поле с номером клиента]=tablica2.[поле с номером клиента]) begin
 selelct @sum2=sum(tabli1ca.[поле с суммами]) where tablica1.[поле с номером клиента]=tablica2.[поле с номером клиента] and tablica1.[поле с датой] between [дата начала месяца] and [дата конца месяца] end
 else if select @sum2=0
 
select tablica2.[поле с номером колиента], @sum1, @sum2

я конешно не особо силён в скуэле но попробовать стоит.
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 18.02.2010, 14:48   #13
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

спасибо за скрипт в хозяйстве обязательно пригодится наверно дам свои. 1. этот скрип вытаскивает количество плательщиков на данный момент привязанных к какому то конкретному оператору(их 750):
Код:
select e.ID,e.REG_NUM, e.ABBR
from EIP e
where
e.ID_STATE > 0

and  e.ID_RPR = 8500085
order by e.REG_NUM;
REG_NUM - регистрационные номера они мне нужны. ID_RPR - табельный номер оператора.

идем далее.. сейчас отбросим 2010год и сделаем всех и 2009 (потом просто по аналогии с 2009 добавим 2010). этот скрипт вытаскивает всех плательщиков на январь 2009г кто платил кто не платил (их всего 558). еще почти 200 чел добавилось после января 2009г.
Код:
select f.ID_INSR,f.REG_NUM,e.ABBR,f.T7R29C1
from viF4INFO(@obj,@root) f,EIP e

where f.YEAR_NUM=2009
and e.ID_RPR=8500085 and f.QUART_NUM=1 and f.ID_INSR=e.ID
order by f.REG_NUM;
вот теперь нам надо соеденить 2 скрипта: 1й в котором 750(всего) со вторым (558 на январь 2009) и при чем так чтоб сели суммы. я делал временные таблицы и почти сделал все
Код:
drop t1;
create global temporary table t1(
IDt1 dword,
REG_NUMt1  char(12) ,
ABBRt1     char(100),
Summat1 int (0)
);

fix all;

insert into t1(IDt1,REG_NUMt1,ABBRt1)

select e.ID,e.REG_NUM, e.ABBR
from EIP e
where
e.ID_STATE > 0

and  e.ID_RPR = 8500085
order by e.REG_NUM;

//select  IDt1,REG_NUMt1,ABBRt1,Summat1
//from t1;
//------------- 2й скрипт


drop t2;
create global temporary table t2(

IDt2 dword,
REG_NUMt2  char(12) ,
ABBRt2     char(100),
Summat2   currency
);

fix all;
var @obj=580110, @root=3011;
insert into t2(IDt2,REG_NUMt2,ABBRt2,Summat2)

select f.ID_INSR,f.REG_NUM,e.ABBR,f.T7R29C1
from viF4INFO(@obj,@root) f,EIP e

where f.YEAR_NUM=2009
and e.ID_RPR=8500085 and f.QUART_NUM=1 and f.ID_INSR=e.ID
order by f.REG_NUM;
//// последний этап
select t1.REG_NUMt1,t1.ABBRt1,Summat1
from t1
union all
select t2.REG_NUMt2,t2.ABBRt2,t2.Summat2
from t2;
вот тут на последнем этапе я отметил его я union'ом соеденяю 2 скрипта в 1 но вылезают двойники (оно и понятно он просто плюсуюет их) теперь осталось просто избавиться от двойников хз пока как. и при чем загнать их в 3ю временную таблицу я не могу материться что ожидалось ";" около union все хожу вокруг да около
Код:
drop t3;
create global temporary table t3(

REG_NUMt3  char(12) ,
ABBRt3     char(100),
Summat3   currency
);

insert into t3(REG_NUMt3,ABBRt3,Summat3)

select t1.REG_NUMt1,t1.ABBRt1,Summat1
from t1
union all
select t2.REG_NUMt2,t2.ABBRt2,t2.Summat2
from t2;

Последний раз редактировалось wm_leviathan; 18.02.2010 в 14:51.
wm_leviathan вне форума Ответить с цитированием
Старый 18.02.2010, 15:47   #14
Dark_Spirit
Форумчанин
 
Аватар для Dark_Spirit
 
Регистрация: 05.02.2009
Сообщений: 324
По умолчанию

Цитата:
Код:
drop t3;
create global temporary table t3(

REG_NUMt3  char(12) ,
ABBRt3     char(100),
Summat3   currency
);

insert into t3(REG_NUMt3,ABBRt3,Summat3)

select t1.REG_NUMt1,t1.ABBRt1,Summat1
from t1
union all
select t2.REG_NUMt2,t2.ABBRt2,t2.Summat2
from t2;
а если так поменять:
Цитата:
Код:
drop t3;
create global temporary table t3(

REG_NUMt3  char(12) ,
ABBRt3     char(100),
Summat3   currency
);

insert into t3(REG_NUMt3,ABBRt3,Summat3)

select t1.REG_NUMt1,t1.ABBRt1,Summat1
from t1;

insert into t3(REG_NUMt3,ABBRt3,Summat3)
select t2.REG_NUMt2,t2.ABBRt2,t2.Summat2
from t2;

select distinct * t3
Тяжело быть бестолковым.....
Dark_Spirit вне форума Ответить с цитированием
Старый 18.02.2010, 16:48   #15
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

Огромное спасибо!!!! прекрасно получилась ваша конструкция. непонятно почему с union не сработало но в принципе ваш вариант сработал как я и хотел когда мучался с union. щсталось только двойников убрать но тут просто в принцепе. вот конечный результат.
Код:
drop t3;
create global temporary table t3(

REG_NUMt3  char(12) ,
ABBRt3     char(100),
Summat3   currency
);

insert into t3(REG_NUMt3,ABBRt3,Summat3)

select t1.REG_NUMt1,t1.ABBRt1,Summat1
from t1;

insert into t3(REG_NUMt3,ABBRt3,Summat3)
select t2.REG_NUMt2,t2.ABBRt2,t2.Summat2
from t2;

select *
from t3
group by REG_NUMt3
having count(REG_NUMt3) >= 1
order by ABBRt3
. Еще раз огромное спасибо вам. сейчас по аналогии прикручу 2010год и завтра сдамся как раз в срок
wm_leviathan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TIBQuery fields Lion-Tiger БД в Delphi 12 16.08.2011 15:15
Отличия Fields в 2003 и 2007 Word-aх Diego__ Microsoft Office Word 1 18.09.2009 23:42
перенос данных из DBGrid в DBGrid KingSize БД в Delphi 17 24.04.2009 09:30
delphi add all fields runtime tarakan1983 БД в Delphi 1 24.03.2009 13:05
delete where fields=null??? Geddar SQL, базы данных 1 02.06.2008 16:57