Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Объединить несколько таблиц и получить одну таблицу / 25 сообщений из 54, страница 1 из 3
22.03.2018, 14:49
    #39618924
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Доброго времени суток!

Имеются таблицы в MS SQL.
1. t1 - справочник стран
t1_1 - код
t1_2 - наименование

2. t2 - справочник валют
t2_1 - код
t2_2 - наименование

3. t3 - ежедневные операции с колонками:
t3_1 - дата операции
t3_2 - код валюты
t3_3 - счет дебета
t3_3 - счет кредита
t3_5 - сумма
t3_6 - код страны

Мне нужно эти таблицы объединить в один курсор и вытащить в excel.

Делаю следующий запрос, но этого не достаточно:
Код: sql
1.
2.
select t3_2 as валюта, count(*) as количество, sum(t3_5) as сумма from T3 where t3_1 between 
m_date1 and m_date2 and (t3_3 like 'XXXXX%' or t3_3 like 'YYYYY%') group by t3_2


А дальше не могу делать в разрезе стран (горизонтально) и валют (вертикально). Есть у кого какие- нибудь идеи?
...
Рейтинг: 0 / 0
22.03.2018, 15:01
    #39618938
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
На рисунке выходная форма
...
Рейтинг: 0 / 0
23.03.2018, 17:39
    #39619733
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Уважаемые знатоки, поделитесь плз идеями...
...
Рейтинг: 0 / 0
23.03.2018, 20:55
    #39619829
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftДоброго времени суток!

Имеются таблицы в MS SQL.
1. t1 - справочник стран
t1_1 - код
t1_2 - наименование

2. t2 - справочник валют
t2_1 - код
t2_2 - наименование

3. t3 - ежедневные операции с колонками:
t3_1 - дата операции
t3_2 - код валюты
t3_3 - счет дебета
t3_3 - счет кредита
t3_5 - сумма
t3_6 - код страны

Мне нужно эти таблицы объединить в один курсор и вытащить в excel.

Делаю следующий запрос, но этого не достаточно:
Код: sql
1.
2.
select t3_2 as валюта, count(*) as количество, sum(t3_5) as сумма from T3 where t3_1 between 
m_date1 and m_date2 and (t3_3 like 'XXXXX%' or t3_3 like 'YYYYY%') group by t3_2


А дальше не могу делать в разрезе стран (горизонтально) и валют (вертикально). Есть у кого какие- нибудь идеи?А дальше делается выборка на три поля, определяющих строку, колонку и значение на их пересечении, которая потом скармливается на вход штатного для фокса создателя шахматок vfpXtab. Результат работы скармливается Excel и в нём оформляется.
...
Рейтинг: 0 / 0
24.03.2018, 06:25
    #39619897
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Sergey SizovДелается выборка на три поля, определяющих строку, колонку и значение на их пересечении, которая потом скармливается на вход штатного для фокса создателя шахматок vfpXtab. Результат работы скармливается Excel и в нём оформляется.Будьте добры, приведите примеры плз...
...
Рейтинг: 0 / 0
24.03.2018, 12:19
    #39619939
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoft, долго писать.
Откройте в фоксе Task Pane, на закладе Solution Samples в окно поиска введите Cross-tab и изучите пример. В исходниках.
...
Рейтинг: 0 / 0
29.03.2018, 11:05
    #39622512
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Сделал такой запрос для входящих сообщений:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
m_sql="SELECT "+; 
"'Входящие' as direction,"+;
"DO_KODV, DO_SUMV, DO_SUMN, DO_ST,"+;
"do_lc2 as do_lc,k.kl_stat "+;
"FROM dokod d (nolock), dbmaslc l (nolock), klient k(nolock) "+;
"WHERE DO_DATE between "+;
Convparm(m_date1)+" and "+Convparm(m_date2)+;
"and (do_lc1 like '127101022%' or do_lc1 like '127101023%' or do_lc1 like '127101024%' or do_lc1 like '127101025%' or do_lc1 like '127101026%' or do_lc1 like '127101029%') "+;
"and substring(do_lc2,4,5)<>'60303' and do_kodv<>'417' "+;
"and do_kodv=ml_kodv and do_lc2=ml_lc and d.kodb=l.kodb and l.ML_KODKL=k.kl_kod"
ok=oODED.Exec_sp(m_sql,'t1')


Записываю входящие сообщения в курсор SW
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT t1
SCAN
SELECT SW
APPEND BLANK 
REPLACE sw_tip    WITH t1.direction
REPLACE sw_kodv   WITH t1.DO_KODV
REPLACE sw_sumv   WITH t1.DO_SUMV
REPLACE sw_sumn   WITH t1.DO_SUMN
REPLACE sw_strana WITH IIF(ISNULL(t1.DO_ST),0,t1.DO_ST)
REPLACE sw_lc     WITH t1.do_lc
REPLACE sw_stat   WITH t1.kl_stat
IF SUBSTR(sw_lc,4,5)!='20002' AND SUBSTR(sw_lc,4,5)!='20004' AND SUBSTR(sw_lc,4,5)!='20201' AND SUBSTR(sw_lc,4,5)!='20202' AND SUBSTR(sw_lc,4,5)!='20211' AND SUBSTR(sw_lc,4,5)!='20214' 
AND SUBSTR(sw_lc,4,5)!='20003' AND SUBSTR(sw_lc,4,5)!='20006' AND SUBSTR(sw_lc,4,5)!='20013' AND SUBSTR(sw_lc,4,5)!='20021' AND SUBSTR(sw_lc,4,5)!='20031'
REPLACE sw_vid    WITH 'Финансовые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20002' OR SUBSTR(sw_lc,4,5)='20004'
REPLACE sw_vid    WITH 'Торговые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20201' OR SUBSTR(sw_lc,4,5)='20202' OR SUBSTR(sw_lc,4,5)='20211' OR SUBSTR(sw_lc,4,5)='20214' OR SUBSTR(sw_lc,4,5)='20003' OR SUBSTR(sw_lc,4,5)='20006' 
OR SUBSTR(sw_lc,4,5)='20013' OR SUBSTR(sw_lc,4,5)='20021' OR SUBSTR(sw_lc,4,5)='20031'
REPLACE sw_vid    WITH 'Переводы'
ENDIF
ENDSCAN


Сделал такой запрос для исходящих сообщений:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
m_sql="SELECT "+;
"'Исходящие' as direction,"+;
"DO_KODV, DO_SUMV, DO_SUMN, DO_ST,"+;
"do_lc1 as do_lc,k.kl_stat "+;
"FROM bankadm.dokod d (nolock), bankadm.dbmaslc l (nolock), bankadm.klient k(nolock) "+;
"WHERE DO_DATE between "+;
Convparm(m_date1)+" and "+Convparm(m_date2)+;
"and (do_lc2 like '127101022%' or do_lc2 like '127101023%' or do_lc2 like '127101024%' or do_lc2 like '127101025%' or do_lc2 like '127101026%' or do_lc2 like '127101029%') "+;
"and substring(do_lc1,4,5)<>'60303' and do_kodv<>'417' "+;
"and do_kodv=ml_kodv and do_lc1=ml_lc and l.ML_KODKL=k.kl_kod"
ok=oODED.Exec_sp(m_sql,'t2')


Записываю исходящие сообщения в курсор SW
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
SELECT t2
SCAN
SELECT SW
APPEND BLANK 
REPLACE sw_tip    WITH t2.direction
REPLACE sw_kodv   WITH t2.DO_KODV
REPLACE sw_sumv   WITH t2.DO_SUMV
REPLACE sw_sumn   WITH t2.DO_SUMN
REPLACE sw_strana WITH IIF(ISNULL(t1.DO_ST),0,t1.DO_ST)
REPLACE sw_lc     WITH t2.do_lc
REPLACE sw_stat   WITH t2.kl_stat
IF SUBSTR(sw_lc,4,5)!='20002' AND SUBSTR(sw_lc,4,5)!='20004' AND SUBSTR(sw_lc,4,5)!='20201' AND SUBSTR(sw_lc,4,5)!='20202' AND SUBSTR(sw_lc,4,5)!='20211' AND SUBSTR(sw_lc,4,5)!='20214' 
AND SUBSTR(sw_lc,4,5)!='20003' AND SUBSTR(sw_lc,4,5)!='20006' AND SUBSTR(sw_lc,4,5)!='20013' AND SUBSTR(sw_lc,4,5)!='20021' AND SUBSTR(sw_lc,4,5)!='20031'
REPLACE sw_vid    WITH 'Финансовые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20002' OR SUBSTR(sw_lc,4,5)='20004'
REPLACE sw_vid    WITH 'Торговые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20201' OR SUBSTR(sw_lc,4,5)='20202' OR SUBSTR(sw_lc,4,5)='20211' OR SUBSTR(sw_lc,4,5)='20214' OR SUBSTR(sw_lc,4,5)='20003' OR SUBSTR(sw_lc,4,5)='20006' 
OR SUBSTR(sw_lc,4,5)='20013' OR SUBSTR(sw_lc,4,5)='20021' OR SUBSTR(sw_lc,4,5)='20031'
REPLACE sw_vid    WITH 'Переводы'
ENDIF
ENDSCAN

Далее, создаю другой курсор R21J и записываю данные из SW:
Код: sql
1.
2.
3.
4.
5.
6.
CREATE CURSOR R21J (r_tip c(10), r_vid c(10), r_val c(3), r_strana int, r_sum n(15,2))
SELECT SW
SCAN 
	INSERT INTO R21J (r_tip,r_vid,r_val,r_strana,r_sum ) ;
	      VALUES (SW.sw_tip,SW.sw_vid,SW.sw_kodv,SW.sw_strana,SW.sw_sumn)
ENDSCAN
...
Рейтинг: 0 / 0
29.03.2018, 11:06
    #39622513
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Результат на следующей рисунке
...
Рейтинг: 0 / 0
29.03.2018, 11:08
    #39622516
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Как мне раскидать из курсора R21J по следующей таблице?
...
Рейтинг: 0 / 0
29.03.2018, 11:12
    #39622519
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
т.е. следующим образом в эксель выгрузить в разрезе валют:

Россия (всего):
- Входящие
- Исходящие

из них:
- Финансовые
- Торговые
- Переводы

Бельгия (всего):
- Входящие
- Исходящие

из них:
- Финансовые
- Торговые
- Переводы
...
Рейтинг: 0 / 0
29.03.2018, 11:15
    #39622524
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftт.е. следующим образом в эксель выгрузить в разрезе валют:

Россия (всего):
- Входящие
- Исходящие

из них:
- Финансовые
- Торговые
- Переводы

Бельгия (всего):
- Входящие
- Исходящие

из них:
- Финансовые
- Торговые
- Переводыиз них:
- Финансовые
-------Входящие
-------Исходящие
- Торговые
-------Входящие
-------Исходящие
- Переводы
-------Входящие
-------Исходящие
...
Рейтинг: 0 / 0
29.03.2018, 12:02
    #39622577
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftКак мне раскидать из курсора R21J по следующей таблице?Еще раз - никак. Это шахматка, у америкосов это Cross-Tab report. В фоксе для получения таких таблиц предназначен идущий в поставке VFPXTAB.prg, на вход которому надо передать таблицу/курсор из 3(Трёх) полей - значение для заголовка строки, значение для заголовка колонки и значение на их пересечении.
...
Рейтинг: 0 / 0
29.03.2018, 12:52
    #39622619
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoft,
куча кода, который невозможно запустить. И что с ним делать? Любоваться?
Могу покритиковать.
1. Г.код типа
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
IF SUBSTR(sw_lc,4,5)!='20002' AND SUBSTR(sw_lc,4,5)!='20004' AND SUBSTR(sw_lc,4,5)!='20201' AND SUBSTR(sw_lc,4,5)!='20202' AND SUBSTR(sw_lc,4,5)!='20211' AND SUBSTR(sw_lc,4,5)!='20214' 
AND SUBSTR(sw_lc,4,5)!='20003' AND SUBSTR(sw_lc,4,5)!='20006' AND SUBSTR(sw_lc,4,5)!='20013' AND SUBSTR(sw_lc,4,5)!='20021' AND SUBSTR(sw_lc,4,5)!='20031'
REPLACE sw_vid    WITH 'Финансовые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20002' OR SUBSTR(sw_lc,4,5)='20004'
REPLACE sw_vid    WITH 'Торговые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20201' OR SUBSTR(sw_lc,4,5)='20202' OR SUBSTR(sw_lc,4,5)='20211' OR SUBSTR(sw_lc,4,5)='20214' OR SUBSTR(sw_lc,4,5)='20003' OR SUBSTR(sw_lc,4,5)='20006' 
OR SUBSTR(sw_lc,4,5)='20013' OR SUBSTR(sw_lc,4,5)='20021' OR SUBSTR(sw_lc,4,5)='20031'
REPLACE sw_vid    WITH 'Переводы'


легко и свободно заменяется табличкой с балансовыми счетами и категориями, к которым они относятся.
2. Код
Код: sql
1.
2.
3.
4.
5.
6.
CREATE CURSOR R21J (r_tip c(10), r_vid c(10), r_val c(3), r_strana int, r_sum n(15,2))
SELECT SW
SCAN 
	INSERT INTO R21J (r_tip,r_vid,r_val,r_strana,r_sum ) ;
	      VALUES (SW.sw_tip,SW.sw_vid,SW.sw_kodv,SW.sw_strana,SW.sw_sumn)
ENDSCAN


опять же легко и свободно заменяется на
Код: sql
1.
2.
INSERT INTO R21J (r_tip,r_vid,r_val,r_strana,r_sum ) ;
  select sw_tip,sw_vid,sw_kodv,sw_strana,sw_sumn from SW
...
Рейтинг: 0 / 0
29.03.2018, 13:24
    #39622645
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Sergey, да я согласен.
У меня в ms sql имеется бд и нужные мне таблицы.
1. dokod - ежедневные транзакции
2. dbmaslc - массив счетов
3. sprstr - справочник стран
4. sprval - справочник валют
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
IF SUBSTR(sw_lc,4,5)!='20002' AND SUBSTR(sw_lc,4,5)!='20004' AND SUBSTR(sw_lc,4,5)!='20201' AND SUBSTR(sw_lc,4,5)!='20202' AND SUBSTR(sw_lc,4,5)!='20211' AND SUBSTR(sw_lc,4,5)!='20214' 
AND SUBSTR(sw_lc,4,5)!='20003' AND SUBSTR(sw_lc,4,5)!='20006' AND SUBSTR(sw_lc,4,5)!='20013' AND SUBSTR(sw_lc,4,5)!='20021' AND SUBSTR(sw_lc,4,5)!='20031'
REPLACE sw_vid    WITH 'Финансовые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20002' OR SUBSTR(sw_lc,4,5)='20004'
REPLACE sw_vid    WITH 'Торговые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20201' OR SUBSTR(sw_lc,4,5)='20202' OR SUBSTR(sw_lc,4,5)='20211' OR SUBSTR(sw_lc,4,5)='20214' OR SUBSTR(sw_lc,4,5)='20003' OR SUBSTR(sw_lc,4,5)='20006' 
OR SUBSTR(sw_lc,4,5)='20013' OR SUBSTR(sw_lc,4,5)='20021' OR SUBSTR(sw_lc,4,5)='20031'
REPLACE sw_vid    WITH 'Переводы'

Т.е. сначала я беру из таблицы DOKOD нужные мне поля, затем я определяю по балансовым счетам типы сообщений, иначе ни как.
...
Рейтинг: 0 / 0
29.03.2018, 13:31
    #39622656
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Далее, по дебету, т.е. это do_lc1
Код: sql
1.
2.
3.
4.
"WHERE DO_DATE between "+;
Convparm(m_date1)+" and "+Convparm(m_date2)+;
"and (do_lc1 like '127101022%' or do_lc1 like '127101023%' or do_lc1 like '127101024%' or do_lc1 like '127101025%' or do_lc1 like '127101026%' or do_lc1 like '127101029%') "+;
"and substring(do_lc2,4,5)<>'60303' and do_kodv<>'417' "+;



Далее, по кредиту, т.е. это do_lc2
Код: sql
1.
2.
3.
4.
"WHERE DO_DATE between "+;
Convparm(m_date1)+" and "+Convparm(m_date2)+;
"and (do_lc2 like '127101022%' or do_lc2 like '127101023%' or do_lc2 like '127101024%' or do_lc2 like '127101025%' or do_lc2 like '127101026%' or do_lc2 like '127101029%') "+;
"and substring(do_lc1,4,5)<>'60303' and do_kodv<>'417' "+;


за определенный период беру данные только по этим счетам по дебету do_lc1 - входящие сообщения, по кредиту do_lc2 - исходящие сообщения. Входящие и исходящие сообщения собираю в один курсор и все.
...
Рейтинг: 0 / 0
29.03.2018, 13:34
    #39622658
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
В таблице DOKOD имеются do_kodv - коды валют и do_st - коды стран.
...
Рейтинг: 0 / 0
29.03.2018, 14:18
    #39622688
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftУ меня в ms sql имеется бд и нужные мне таблицы.
1. dokod - ежедневные транзакции
2. dbmaslc - массив счетов
3. sprstr - справочник стран
4. sprval - справочник валют


Я бы все это сделал сразу на MS SQL
И получал бы на клиент готовые данные.
А поскольку надо в ексель, то и без фокса можно.
...
Рейтинг: 0 / 0
29.03.2018, 14:44
    #39622705
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
asdor,
Код: sql
1.
А поскольку надо в ексель, то и без фокса можно.

У меня программа на VFP 8.
Код: sql
1.
Я бы все это сделал сразу на MS SQL и получал бы на клиент готовые данные.

Вот тут по подробнее пожалуйста...
...
Рейтинг: 0 / 0
29.03.2018, 15:42
    #39622724
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoft
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
IF SUBSTR(sw_lc,4,5)!='20002' AND SUBSTR(sw_lc,4,5)!='20004' AND SUBSTR(sw_lc,4,5)!='20201' AND SUBSTR(sw_lc,4,5)!='20202' AND SUBSTR(sw_lc,4,5)!='20211' AND SUBSTR(sw_lc,4,5)!='20214' 
AND SUBSTR(sw_lc,4,5)!='20003' AND SUBSTR(sw_lc,4,5)!='20006' AND SUBSTR(sw_lc,4,5)!='20013' AND SUBSTR(sw_lc,4,5)!='20021' AND SUBSTR(sw_lc,4,5)!='20031'
REPLACE sw_vid    WITH 'Финансовые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20002' OR SUBSTR(sw_lc,4,5)='20004'
REPLACE sw_vid    WITH 'Торговые'
ENDIF
IF SUBSTR(sw_lc,4,5)='20201' OR SUBSTR(sw_lc,4,5)='20202' OR SUBSTR(sw_lc,4,5)='20211' OR SUBSTR(sw_lc,4,5)='20214' OR SUBSTR(sw_lc,4,5)='20003' OR SUBSTR(sw_lc,4,5)='20006' 
OR SUBSTR(sw_lc,4,5)='20013' OR SUBSTR(sw_lc,4,5)='20021' OR SUBSTR(sw_lc,4,5)='20031'
REPLACE sw_vid    WITH 'Переводы'

Т.е. сначала я беру из таблицы DOKOD нужные мне поля, затем я определяю по балансовым счетам типы сообщений,Я понял ЧТО вы делаете, я не понял почему вы ТАК это делаете. иначе ни как.Да не может быть. Вы точно все варианты испробовали?
...
Рейтинг: 0 / 0
29.03.2018, 15:53
    #39622731
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftasdor,
Код: sql
1.
А поскольку надо в ексель, то и без фокса можно.

У меня программа на VFP 8.
Код: sql
1.
Я бы все это сделал сразу на MS SQL и получал бы на клиент готовые данные.

Вот тут по подробнее пожалуйста...А что тут подробней-то писать? Пишете запросы на получение нужных данных и получаете результат. Только не в доFPD-шном стиле, а как положена на t-sql.
...
Рейтинг: 0 / 0
29.03.2018, 16:21
    #39622748
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
ularsoftУ меня в ms sql имеется бд и нужные мне таблицы.Оппачки, как-то я это пропустил. То есть запросы на входящие и исходящие таки для ms sql? Тогда сразу кучка критических замечаний.
1. В фоксе есть команда Text...Endtext. Это по поводу формирования строки с запросом.
2. Самописные функции для перевода значений параметров в строку совершенно не нужны и легко заменяются знаком параметра, коим является вопросительный знак.
3. На какой древней версии ms sql вы работаете? Ибо в последних версиях таблицы через запятую запрещены.
4. Указанные условия отбора напрочь отбивают использование индексов.
Короче, если дадите структуру таблиц, то можно будет набросать примерные запросы на все ваши дела.
...
Рейтинг: 0 / 0
29.03.2018, 16:31
    #39622758
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
В дополнение к предыдущему:
Вот как примерно могло бы выглядеть запрос на входящие:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Text to m_SQL nosho flags 1 pretext 15
SELECT  'Входящие' as direction, DO_KODV, DO_SUMV, DO_SUMN, DO_ST, do_lc2 as do_lc,k.kl_stat
FROM dokod d
inner join dbmaslc l on d.kodb=l.kodb
inner join klient k on l.ML_KODKL=k.kl_kod
WHERE DO_DATE between ?m_date1 and ?m_date2
and (do_lc1 like '127101022%' or do_lc1 like '127101023%' or do_lc1 like '127101024%' or do_lc1 like '127101025%' or do_lc1 like '127101026%' or do_lc1 like '127101029%') 
and substring(do_lc2,4,5)<>'60303' and do_kodv<>'417' 
and do_kodv=ml_kodv and do_lc2=ml_lc
endtext
...
Рейтинг: 0 / 0
29.03.2018, 16:33
    #39622760
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
Sergey SizovularsoftУ меня в ms sql имеется бд и нужные мне таблицы.Оппачки, как-то я это пропустил. То есть запросы на входящие и исходящие таки для ms sql? Тогда сразу кучка критических замечаний.
1. В фоксе есть команда Text...Endtext. Это по поводу формирования строки с запросом.

А он только написал про это))))
Таится))))
Да не надо никаких Text...Endtext, на МСе надо все делать. Ну может итоги на фоксе прилепить (упростит может)
...
Рейтинг: 0 / 0
29.03.2018, 16:38
    #39622765
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
asdorДа не надо никаких Text...Endtext, на МСе надо все делать. Ну так я ему общие принципы разъясняю. На том, что тут есть. Навряд ли он только для этого топика так запрос формировал.
...
Рейтинг: 0 / 0
30.03.2018, 00:20
    #39622958
ularsoft
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединить несколько таблиц и получить одну таблицу
asdorНе надо никаких Text...Endtext, на МСе надо все делать. Ну может итоги на фоксе прилепить (упростит может)Приведите пожалуйста примеры...
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Объединить несколько таблиц и получить одну таблицу / 25 сообщений из 54, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]