powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сложить поля в таблицах
83 сообщений из 83, показаны все 4 страниц
Как сложить поля в таблицах
    #38174796
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Всем приветик. Есть 12 таблиц с одинаковыми полями типа так:

ID (содержит названия предметов), st1,st2,st3.... st200 (имена учеников) а на пересечении пропуски. Как сложить все пропуски в такой таблице. Пример таблицы на картинке показан.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174831
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Никто не знает да? :-(
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174839
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Никто не знает да? :-(

Код: sql
1.
select sum(st1), sum(st2) ,.... from tabla
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174843
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
PaulWist, ну так мне же не в одной таблице надо, а каждое соответствующее поле сложить в 12-ти таблицах.

Для примера можно в трех показать дальше я сама
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174845
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
PaulWist, поле st1 таблицы tab1 с полем st2 таблицы tab2 и т.д.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174854
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94PaulWist, поле st1 таблицы tab1 с полем st2 таблицы tab2 и т.д.

CREATE CURSOR t1 (f1 int)
CREATE CURSOR t2 (f2 int)

INSERT INTO t1 values(1)
INSERT INTO t2 values(2)

SELECT SUM(s) as s FROM ;
(select SUM(f1) as s FROM t1;
union all;
select SUM(f2) as s FROM t2;
) bb
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174859
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
PaulWist, Это ведь легче вручную считать чем так вводить, у меня 277 столбцов и 180 строк.

Можно сделать такое:
Пропускать во всех таблицах первую строку, и первый столбец, остальное через VAL() преобразовывать в числовые и складывать? Если да, то как?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174864
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,

авторполе st1 таблицы tab1 с полем st2 таблицы tab2 и т.д.



может
поле st1 таблицы tab1 с полем st1 таблицы tab2 .
поле st2 таблицы tab1 с полем st2 таблицы tab2
....................
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174870
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,

автору меня 277 столбцов и 180 строк.

вы бы лучше базу выложили, а то не понять что с чем складывать
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174873
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
ПЕНСИОНЕРКА, Да да да, извините за ошибку, просто весь день мучаюсь голова кругом
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174883
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94... у меня 277 столбцов и 180 строк. Где ж Вы столько предметов взяли? Бедные ученики... Я бы тоже пропускал.

А теперь серьезно: как называются таблицы, т.е. как-то одинаково (t1, t2, ... ) или нет?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174890
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Jonny540, таблицы, почти одинаково table1,table2... и т.д. 12 таблиц
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174900
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Jonny540, таблицы, почти одинаково table1,table2... и т.д. 12 таблицНазвания полей одинаковы во всех таблицах?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174901
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Jonny540, Да, абсолютно одинаковы
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38174931
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94 у меня 277 столбцов Это точно таблицы фокса?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175026
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Jonny540, да, таблицы в формате DBF
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175058
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94PaulWist, Это ведь легче вручную считать чем так вводить, у меня 277 столбцов и 180 строк.

Можно сделать такое:
Пропускать во всех таблицах первую строку, и первый столбец, остальное через VAL() преобразовывать в числовые и складывать? Если да, то как?

Не лишнее пояснение для любителей SUM().

Чем вызвана такая странная необходимость в такой первой строке?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175066
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
sg12, там фамилии учеников будут подряд. Поэтому
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175105
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94sg12, там фамилии учеников будут подряд. Поэтому

В базах данных обычно фамилии выводят в отдельную таблицу, а числовой учет ведется в числовых полях.
А у вас это строка как шапка, необходимости в ней нет.
Насколько можно вас понять, вы dbf-таблицы просто используете для наглядности, примерно как в EXCEL?

Цикл по таблицам в вашем случае можно организовать примерно так:
lcTable = 'table1,table2, ...,table12' && Список таблиц
FOR i = 1 TO GETWORDCOUNT(lcTable,',')
lcTab = GETWORDNUM(lcTable,i,',') && Очередная таблица
...
ENDFOR
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175116
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
sg12, да, для наглядности, но там таких несколько строк, которые являются шапками. Ученик, Класс, Учитель. Это строки которые будут друг под другом. полную версию придется привести. Вот ниже на картинке. Примерные поля. возможно еще одно поле добавится в виде шапки к полям, но пока что для таких таблиц хотелось бы понять как суммировать
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175120
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
sg12, не могли бы вы для 3-4 таблиц показать пример?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175158
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94у меня 277 столбцов и 180 строк.
Системные ограничения FoxPro - не более 254 (255) полей (столбцов).

Это значит, что в FoxPro Вашу задачу простыми средствами не решить. Даже если Вы сможете открыть эту таблицу в FoxPro Вы ни при каких условиях не сможете увидеть более 254 (255) полей.

Тот факт, что таблица имеет расширение DBF ни о чем не говорит. Форматов файлов DBF - "вагон и маленькая тележка". Какой именно это формат можно посмотреть по значению самого первого (нулевого) байта таблицы

В приведенной ниже таблице перечислены те значения нулевого (первого по порядку) байта DBF-таблицы с которыми FoxPro может работать напрямую без дополнительных драйверов и преобразований

Байт Тип таблицы DBF0x02FoxBASE: 0x03 FoxBASE+/Dbase III plus no memo: 0x30Visual FoxPro: 0x31Visual FoxPro autoincrement enabled: 0x32Visual FoxPro Varchar Varbinary or Blob-enabled: 0x43dBASE IV SQL table files no memo: 0x63dBASE IV SQL system files no memo: 0x83FoxBASE+/dBASE III PLUS with memo: 0x8BdBASE IV with memo: 0xCBdBASE IV SQL table files with memo: 0xF5FoxPro 2.x (or earlier) with memo: 0xFBFoxBASE

Если Ваши DBF-таблицы имеют значение нулевого байта отличное от указанного в этой таблицы, то лучше Вам использовать Excel для суммирования. Тем более Вы крайне невнятно описали постановку задачи.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175159
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Это ведь легче вручную считать чем так вводить, у меня 277 столбцов и 180 строк.
Так это не таблицы, а какие-то листы экселя. Подозреваю что из экселя они и появились. Может экселем и обсчитать если это разово надо? Так быстрее всего будет.

По-хорошему надо сначала таблицы нормализовать, т.е. свести все к одной таблице:
Предмет, Ученик, Кол-во пропусков.
а потом уже считать.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175169
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, нет, это не экзелем посчитано, на днях обсуждалась тема кто-то тут писал создание подобной таблицы, я скопировала этот код и для своего примера поля и таблицы переделала. Сейчас я дам вам ссылку на этот паблик вот кстати, и сегодня было обсуждение этой темы: http://www.sql.ru/forum/actualthread.aspx?tid=1008720 . Вот я получила такую же таблицу но у меня таких 12. И нужно сложить их всех.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175171
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, вот в той теме было то что мне надо сделать тоже, но мне еще нужно и сложить такие таблицы которых 12 штук. И это надо не разово, а каждый год чтобы делалось
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175177
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, вот в той теме было то что мне надо сделать тоже
В той теме решали обратную задачу. Там изначально есть нормализованная таблица из тех полей: Предмет, Ученик, Кол-во пропусков (если применительно к данному примеру). А из этой надо было построить сводную (если в терминах экселя выражаться).
У тебя есть исходная таблица откуда эти 12 взялись?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175180
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, исходная таблица как в той же только с другими полями, данными, а 12 потому что за каждый месяц один такой сводный будет создаваться как в том примере, а затем нужно все 12 сложить и получить годовой отчет. Я недели три пробовала решить первую часть но потом отложила, а теперь как там попробовала получилось. но вот сложение не знаю как делать в таких таблицах
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175184
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
94, есть вообще какой-то способ решить мою задачку? Если 255 только увидеть можно, то хотя бы разделить на две части. или если возможно то выделить ту часть где есть только цифры (т.е. начиная со второго столбца и выкинув первые три строки всех полей) вычислить все сумму всех 12-ти, а потом обратно подставить. Если конечно такое можно сделать
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175185
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, исходная таблица как в той же только с другими полями, данными, а 12 потому что за каждый месяц один такой сводный будет создаваться как в том примере, а затем нужно все 12 сложить и получить годовой отчет. Я недели три пробовала решить первую часть но потом отложила, а теперь как там попробовала получилось. но вот сложение не знаю как делать в таких таблицах
Надо вместо месяца указать период год, остальное все точно также. И не надо пытаться решить в два шага, это гораздо сложнее.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175190
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94sg12, не могли бы вы для 3-4 таблиц показать пример?

Огорчу вас.
Таблицы в базах данных имеют другую структуру. Наглядность в них достигается другим, программным путем.
Ваша база данных известена как учебный пример "Преподаватели и студенты", или наз. что-то похожее.
Вам надо найти несколько готовых решений и изучить их.
Вообще-то неплохая вещь, затраченное время окупится.
В них задачи типа вашей решаются одним несложным запросом.

К примеру.
Даже необходимости разбивать на 12 месяцев нет.
Слейте их в одну таблицу, уберите "шапки", переделайте поля в числовые и ваш запрос упростится.
При необходимости нужный месяц вы сможете наглядно просматривать через фильтр.
Да и от этих 277 полей нужно избавляться, создав таблицу со списком фамилий.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175191
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, у меня 12 разных таблиц :( это все не в одной таблице же ведь.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175192
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
А как сложить просто такие поля: tab1.fil1, tab2.fil1,tab3.fil1, если все поля числовые?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175217
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Можно ли сделать так? : пример с того запроса взяла чтобы вам показать:

тут в 12 курсоров вывести нужные поля из 12-ти полей
Код: sql
1.
2.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f. INTO CURSOR curData1
SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f. INTO CURSOR curData2



Тут подсчитать количество для 12 таблиц
Код: sql
1.
2.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData1 t0 GROUP BY 1,2 INTO CURSOR cc1
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData2 t0 GROUP BY 1,2 INTO CURSOR cc2



Затем просуммировать все 12 таблиц, а именно поле mark. и подставить этот курсор вот сюда:

Код: sql
1.
2.
3.
4.
5.
SELECT PADR(t1.code+'    '+NVL(t2.name_issl,''),nSizeName) AS idRow, CHRTRAN(STR(t1.lpu,3),' ','0') as idCol, ;
 PADR(LTRIM(STR(t1.mark)),nSizeCell) as mark ;
 FROM ([color=red]ВОООТ СЮДА[/color]) t1 ;
  LEFT JOIN issled t2 ON t1.code=t2.shifr ;
INTO CURSOR curTempD



Так правильно ли будет логически вообще?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175236
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
только я не поняла как сделать этот

Код: sql
1.
SELECT code, lpu FROM pac_foms_issleds WHERE BETWEEN(dat_obs,{^2012-01-10},{^2012-01-15}) INTO CURSOR curData



для 12 таблиц вернее как их объединить потом один курсор
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175255
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Как эти курсоры объединить в один чтобы из таблиц не пропали значения и чтобы в результате получился курсор CUR в котором два поля code И lpu co всеми code и lpu из всех 4 таблиц?

Код: sql
1.
2.
3.
4.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f. INTO CURSOR curData1
SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f. INTO CURSOR curData2
SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f. INTO CURSOR curData3
SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f. INTO CURSOR curData4
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175277
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94

Правильно будет в базе данных создать четыре таблицы примерно с такими с полями:
Группы (классы) - idTab,cName
Студенты (ученики) - idTab,idGroup,cName
Предметы - idTab,cName
Посещаемость - idTab,nMonth,idPredmet,idStudent,nExclud
Первые три таблицы - это справочники.
Детали - индексы, связи, фильтры, запросы вам подскажут, разберетесь.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175286
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94 ,
Зачем что-то создавать из кросса? Как уже было сказано - покажите пример таблиц-исходников, на основе которого вы получили свои table1...tableX. Поскольку вот прямо из этого исходника всё и считается...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175396
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Как эти курсоры объединить в один чтобы из таблиц не пропали значения и чтобы в результате получился курсор CUR в котором два поля code И lpu co всеми code и lpu из всех 4 таблиц?


Можно
Код: sql
1.
2.
3.
4.
5.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
  union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
  INTO CURSOR curData
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175398
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, извините можно узнать? этим кодом поля lpu и code объединили вы? или что сделали
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175399
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, потому что lpu же у него это номер ЛПУ оно как бы не должно меняться также как и код, а я этот код запускаю ЛПУ с номером 1 вообще нету теперь
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175401
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде чем оптимизировать на SQL, попробуйте всё это сделать в цикле...
Например
select t1
go top
select t2
go top
select t3
go top
*создать структуру таблицы для хранения результатов
select * from tab1 where .F. into cursor cc1
do while .T.
append blank
cc1.fil1= tab1.fil1+ tab2.fil1+tab3.fil1 && тут можно сделать перевод в строку каждого fil
select t1
skip
select t2
skip
select t3
skip
if eof("t1") or eof("t2") or eof("t3")
exit
endif
enddo
Это примерно или я не понял условие задачи....
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175406
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, потому что lpu же у него это номер ЛПУ оно как бы не должно меняться также как и код, а я этот код запускаю ЛПУ с номером 1 вообще нету теперь
этот запрос объединяет данные из таблиц pac_foms_issleds1, pac_foms_issleds2, pac_foms_issleds3, pac_foms_issleds4 в один курсор curData
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175410
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующий шаг
Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175416
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, после группировки потом будет как мне надо то есть? в первом столбике code, а во втором lpu ?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175417
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
q1w1e1, условие задачи такое что нужно сложить поля st1,st2...st200 пропустив во всех 12-ти таблицах первые три строчки так как там слова(символы), а в последующих строках цифры которые надо сложить
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175420
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,

автору меня 277 столбцов и 180 строк.

я считаю это отрыжкой екселя
как вы можете гарантировать, что в столбце 89 будет Иванов, а в 189-Петров
во всех 12 таблицах

за год, даже в школах есть движение учеников(приход/уход/перекомплектование )
в классах/группах есть однофамильцы

оптимально таблица(вернее 2 таб)
таб1
ид1годмесяцденькласспредмет12013030610аматематика2345

таб2
ид2ид1фио11Иванов21Петров

а ваши простыни получать запросами
--по классу
--по предмету
--по периоду/предмету
..................

а ваши эксель простыни перегнать в таблички не проблема
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175422
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, я сделала как вы говорите и у меня в курсоре cc есть три поля теперь code,lpu и mar. Есть ЛПУ с номером 1 в таблицах pac_foms_issleds1, но в курсоре CC в поле lpu 1 нигде нету. Как это понять? (

Я хотела так чтобы было: все 4 таблицы объединить так чтобы все поля code из всех таблиц оказались в поле code, а напротив в поле lpu номер lpu, для которого это поле code соответствует? В вашем коде так делается? Я это не поняла
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175424
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
ПЕНСИОНЕРКА, мне именно так сказали делать, потому что первые три строчки будут шапкой и после всего окончательный вариант отчет за год будет выведен в эксель
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175429
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, я сделала как вы говорите и у меня в курсоре cc есть три поля теперь code,lpu и mar. Есть ЛПУ с номером 1 в таблицах pac_foms_issleds1, но в курсоре CC в поле lpu 1 нигде нету. Как это понять? (
значит для lpu 1 в pac_foms_issleds1 excluded=.T.
нет других причин не попасть в curData, а из него в CC


Код: sql
1.
2.
3.
4.
5.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
  union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
  INTO CURSOR curData


это запрос берет все записи из pac_foms_issleds1 где excluded=.f.
добавляет все записи из pac_foms_issleds2 где excluded=.f.
добавляет все записи из pac_foms_issleds3 где excluded=.f.
добавляет все записи из pac_foms_issleds4 где excluded=.f.
и сохраняет результат в курсор curData
больше никаких вычислений/преобразований он не делает
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175431
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, Да, запрос делает так, но я сейчас оставила для примера по 5 записей во всех таблицах и применила ваш код, у меня получилось в поле code 5 значений в lpu 5 и в mark 5, хотя во всех таблицах по 5 значений и вроде должно быть 20 значений. так как одна строчка из pac_foms_issleds1 это одна медо.бследование. Вот как мне сделать чтобы все 20 появились
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175432
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
94, Ой, извините. Этот код и правда выводит 20 записей.

Код: sql
1.
2.
3.
4.
5.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
  union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
  INTO CURSOR curData



А зачем мне тогда этот кусок. Он вроде мне не нужен. Из куска где union all получаем все значения code и соответсвтвующие значения lpu, и дальше можно как в том примере обратно создать кросс-таблицу. Или я что-то пропустила?
Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, Да, запрос делает так, но я сейчас оставила для примера по 5 записей во всех таблицах и применила ваш код, у меня получилось в поле code 5 значений в lpu 5 и в mark 5, хотя во всех таблицах по 5 значений и вроде должно быть 20 значений. так как одна строчка из pac_foms_issleds1 это одна медо.бследование. Вот как мне сделать чтобы все 20 появились
20 в curData


это запрос с группировкой по code, lpu
Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc


в СС столько строк сколько уникальных пар значений code, lpu, а в поле mark сколько раз значение повторилось. Т.е. если в СС сложить все поля mark будет 20


Ты писала что pac_foms_issleds1 это исходные данные за месяц и получить по ним конечный отчет за месяц получилось? Так?
Если так, то curData тоже самое что pac_foms_issleds1 только с данными за 4 месяца. Делай дальше все точно также как делала с pac_foms_issleds1 и получишь отчет за 4 месяца
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175442
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94А зачем мне тогда этот кусок. Он вроде мне не нужен.
Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc


хз зачем он тебе. Ты тут его писала , я скопировал.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175446
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, А, я поняла. Сначала за 4 месяца берем все заносим в CurData, затем тут

Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc



получается считаем количество как в том примере только для 4-х месяцев. Я просто запуталась немножко.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175451
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94ПЕНСИОНЕРКА, мне именно так сказали делать, потому что первые три строчки будут шапкой и после всего окончательный вариант отчет за год будет выведен в эксель

в любом случае --я делала бы по схеме
--перегнала 12 таблиц в 2 таблицы
--получила нужные итоги
--вывела их в ексель(кстати ---сколько получится страниц в ширину , похоже около 30)
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175452
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
ПЕНСИОНЕРКА, Вот я тоже хочу перегнать все 12 только в 1, где есть code и lpu поля из всех 12-ти таблиц. А потом как в том примере создать кросс-таблицу.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175461
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, А, я поняла. Сначала за 4 месяца берем все заносим в CurData, затем тут

получается считаем количество как в том примере только для 4-х месяцев.
Все верно
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175463
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,


при применении аксесс -2таб, в этом случае легче вводить первичную информацию

у вас же информация уже введена, поэтому можно использовать только ексель с одной таблицей, на которую повесить сводную
хотя надо гарантировать , что нет однофамильцев
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175464
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Dima T, У меня последний вопрос: Если с помощью union all и потом группировкой занести данные за 12 или 4 месяца в курсоры, то ничего же не нужно мне складывать потом? Я получаю в курсорах информацию за тот период сколько раз использовала этот кусок? И потом спокойно могу создать кросс табличку как там? Просто не хочу сейчас что-то пропустить или напутать(

Код: sql
1.
SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175466
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Код: sql
1.
2.
3.
4.
5.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
  union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
  union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
  INTO CURSOR curData


А зачем мне тогда этот кусок. Он вроде мне не нужен. Из куска где union all получаем все значения code и соответсвтвующие значения lpu, и дальше можно как в том примере обратно создать кросс-таблицу. Или я что-то пропустила?
Код: sql
1.
SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2 INTO CURSOR cc

I'm silence... Я хренею над вами, ребята...
Я, случайно посмотрев на попытку пришедшего к нам человека, попытался помочь Ичкерии...
И тут же нарисовались студенты, которые хотять иже...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175471
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
AndreTM, я сначала хочу разобрать пример который разбирали там, а потом под свои таблицы переделать. Лучше сначала понять, а потом свое сделать уже что-то понимая в этом. Так что сначала прочитала тот пост. Потому что задачка такая же только еще надо было это все из 12-ти таблиц посчитать
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175473
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Dima T, У меня последний вопрос: Если с помощью union all и потом группировкой занести данные за 12 или 4 месяца в курсоры,
с помощью union all объединяются данные из 12 (или 4) таблиц в один курсор.

94то ничего же не нужно мне складывать потом?
не нужно, т.к. все уже в одном курсоре.

После union all таблицы pac_foms_issleds1, pac_foms_issleds2 и т.д. больше не нужны, т.к. дальше работа идет только с курсором.
По курсору строится кросс табличка.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175476
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,

я не уверена, что вам подходит union all
у вас может быть разное количество столбцов в таблицах
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175480
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повторить?
UNION нужен только тогда, когда ТС понимает смысл объединения. Исходя же из постов - не понимает...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175484
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
AndreTM, union не я же написала, мне тут написали, что можно так сделать. Если не подходит union, то какой способ лучше? Сама плохо понимаю, поэтому обратилась за помощью, когда тут увидела похожую тему, такую же как и мне нужно сделать
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175488
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94

И как вы собираетесь работать с этими за 200 полями, да еще с фамилиями.
У вас же отчеты будут уходить за горизонт.

Вы напрасно ориентируетесь на пример с ЛПУ. Это отчет, неумело составленный таким же новичком, как вы. Такова сложившиеся специфика в медучреждениях с досовских времен - разворачивать отчеты по горизонтали.

У вас же хорошо известная учебная база данных.
Вы имеете дело с собственно данными, но составляете список фамилий в полях. Отсюда у вас и такая громадная таблица, как только вы умудряетесь с ней работать.
Необходимости в таком количестве полей нет. Уже упоминалось, что в 12 таблицах нет необходимости. Как и в мудрствовании с кросс-таблицами.

К примеру.
Попробуйте вышеупомянутую мной таблицу "Посещаемость" изменить так:
Убрать поля nMonth и nExclud, для учета посещаемости по месяцам добавить поля nMonth1, nMonth2, ... nMonth12,nYear
Тогда суммирование у вас будет наглядно выполняться одной командой REPLACE ALL.
Необходимые отчеты вы будете получать из таблиц запросами. Для их отображения в EXCEL есть свои способы, рисуйте там свои шапки.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175495
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94..какой способ лучше? Сама плохо понимаю, поэтому обратилась за помощью, когда тут увидела похожую тему, такую же как и мне нужно сделатьAndreTM 94 ,
Зачем что-то создавать из кросса? Как уже было сказано - покажите пример таблиц-исходников, на основе которого вы получили свои table1...tableX. Поскольку вот прямо из этого исходника всё и считается...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175497
Ребята, возможно, что у меня столбцы всегда будут определенного количества, потому что в столбцы это ЛПУ направившие своих пациентов в наш центр. И каждый месяц хоть одного человека то что отправляют от каждого ЛПУ это мне кажется 100%, я тут читал пост и т.к. у меня есть 12 таблиц таких за прошедший год попробовал получить годовой отчет и результат выдал в курсор нормальный вроде бы. Вот код весь:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
nSizeCell=50
nSizeName=90

SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
	union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds5 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds6 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds7 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds8 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds9 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds10 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds11 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds12 WHERE excluded=.f.);
	INTO CURSOR curData
  
SELECT DISTINCT '00000    Номер ЛПУ' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(LTRIM(STR(t2.lpu)),nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuNumbers
 
SELECT DISTINCT '00000    ЛПУ направившие' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(t2.nam,nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuNames
  
SELECT DISTINCT '00000    Код ЛПУ ФОМС' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(t2.fomslpu,nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuFoms
 
SELECT PADR(t1.code+'    '+NVL(t2.name_issl,''),nSizeName) AS idRow, CHRTRAN(STR(t1.lpu,3),' ','0') as idCol, ;
	PADR(LTRIM(STR(t1.mark)),nSizeCell) as mark ;
	FROM (SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2) t1 ;
	LEFT JOIN issled t2 ON t1.code=t2.shifr INTO CURSOR NameIssleds
  
SELECT * FROM LpuNumbers ;
	UNION ;
	select * FROM LpuNames ;
	UNION ;
	select * FROM LpuFoms ;
	UNION ;
	select * FROM NameIssleds INTO CURSOR curTempD

DO vfpxtab.prg WITH 'curTemp',,.f.,,1,2,3,,,.f.

SELECT curTemp
UPDATE curTemp SET Idrow=SUBSTR(Idrow,10)

SELECT curtemp
brow

...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175498
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sg12,
Get Out
Please...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175518
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94,
вот вам образец реализации
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175521
Вроде правильно посчитало все. Если и мне придется такой годовой отчет делать? такой код сможет все посчитать интересно, при условии что количество ЛПУ всегда одинаково?
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175528
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreTM sg12,
Get Out
Please...

Я уже давал одному студенту ссылку на книгу:
Глушаков С.В. Ломотько Д.В. Базы данных. Учебный курс.
Вам тоже он был бы не лишний.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175531
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр1986, за объединения вас повбывали бы

Допустим, я вчера говорил об оптимизации запросов...
На протяжении всего лишь (а методику уже начали разносить) полдня, за что-то никому из студиозов не пришло в голову изменить селект...
Код: sql
1.
SELECT code, lpu, count(*) FROM ... INTO CURSOR curData WHERE ... GROUP BY 1,2

для того, чтобы затем не делать встроенный запрос в последнем селекте...
------------------
I'm silence too
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175544
AndreTM, там WHERE excluded=.f. больше же нету критериев для отбора. все строки должны попасть, в котором поле excluded=false.

Думаю и мне бы понадобился запрос, который объединяет таблицы, потому что сегодня им нужно за месяц отчет, завтра скажут а давайте сразу за год или пол года. Спасибо. За год тоже формирует нормально, главное чтобы ничего не пропускало во время запросов
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175571
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
Александр1986, правильно ли будет формироваться годовой отчет как тут писал Александр? Мне уже нужно под себя переделать и показать. просто ответьте Да или Нет при условии что столбцы (ЛПУ) всегда одинакового количества в данном случае всегда одинаково
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175774
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94q1w1e1, условие задачи такое что нужно сложить поля st1,st2...st200 пропустив во всех 12-ти таблицах первые три строчки так как там слова(символы), а в последующих строках цифры которые надо сложить

for i=1 to 12
use tabl+(alltrim(str(i)))
go 4 && попадаем на 4 запись, три пропущены..:-)
do while !eof()
skip
enddo
endfor
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175788
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
for i=1 to 12
use tabl+(alltrim(str(i))) alias tabl
go 4 && попадаем на 4 запись, три пропущены..:-)
do while !eof()
x=0
for k=1 to 200
pole="tabl.s"+alltrim(k)
x=x+evaluate(x)
endfor
skip
enddo
endfor
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38175825
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
q1w1e1, Думаю так сложновато, поэтому решила сначала из всех 12-ти таблиц взять нужное и в один курсор, а уже как в том топике кросс-таблицу сформировать. Просто хотела бы знать этот код сделает все правильно или нет? Прошу ответить Да или Нет. :) а то в голове каша будет у меня

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
nSizeCell=50
nSizeName=90

SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
	union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds5 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds6 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds7 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds8 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds9 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds10 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds11 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds12 WHERE excluded=.f.);
	INTO CURSOR curData
  
SELECT DISTINCT '00000    Номер ЛПУ' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(LTRIM(STR(t2.lpu)),nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuNumbers
 
SELECT DISTINCT '00000    ЛПУ направившие' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(t2.nam,nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuNames
  
SELECT DISTINCT '00000    Код ЛПУ ФОМС' AS IdRow, CHRTRAN(STR(t1.lpu,3),' ','0') AS idCol, ;
	PADR(t2.fomslpu,nSizeCell) AS mark ;
	FROM curData t1 INNER JOIN lpu t2 ON t1.lpu=t2.lpu INTO CURSOR LpuFoms
 
SELECT PADR(t1.code+'    '+NVL(t2.name_issl,''),nSizeName) AS idRow, CHRTRAN(STR(t1.lpu,3),' ','0') as idCol, ;
	PADR(LTRIM(STR(t1.mark)),nSizeCell) as mark ;
	FROM (SELECT t0.code, t0.lpu, COUNT(*) as mark FROM curData t0 GROUP BY 1,2) t1 ;
	LEFT JOIN issled t2 ON t1.code=t2.shifr INTO CURSOR NameIssleds
  
SELECT * FROM LpuNumbers ;
	UNION ;
	select * FROM LpuNames ;
	UNION ;
	select * FROM LpuFoms ;
	UNION ;
	select * FROM NameIssleds INTO CURSOR curTempD

DO vfpxtab.prg WITH 'curTemp',,.f.,,1,2,3,,,.f.

SELECT curTemp
UPDATE curTemp SET Idrow=SUBSTR(Idrow,10)

SELECT curtemp
brow

...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38176474
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94 И это надо не разово, а каждый год чтобы делалось
А мне вот это очень понравилось!
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38176588
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94Просто хотела бы знать этот код сделает все правильно или нет? Прошу ответить Да или Нет. :)
Да/Нет никто не ответит, т.к. никто тут не будет вдумываться в глубинный смысл твоей писанины. К тому же исходных данных недостаточно чтоб вдумываться.
Учись сама понимать как оно работает. Именно за это тебе зп платят.

Могу сказать "Да" если замена этого
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
	union all (SELECT code, lpu FROM pac_foms_issleds2 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds3 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds4 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds5 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds6 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds7 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds8 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds9 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds10 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds11 WHERE excluded=.f.);
	union all (SELECT code, lpu FROM pac_foms_issleds12 WHERE excluded=.f.);
	INTO CURSOR curData



на это
Код: sql
1.
2.
SELECT code, lpu FROM pac_foms_issleds1 WHERE excluded=.f.;
	INTO CURSOR curData



даст правильный отчет за 1 месяц.

Если даст, то за 12 месяцев тоже правильно.
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38176696
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Александр1986AndreTM, там WHERE excluded=.f. больше же нету критериев для отбора. все строки должны попасть, в котором поле excluded=false.Пойми такую вещь, что WHERE там может быть каким угодно... А вот такое:
Код: sql
1.
SELECT code, lpu, COUNT(*) AS Mark FROM pac_foms_issleds ... GROUP BY 1,2 ... INTO CURSOR curData

позволит сразу повторно не строить подзапрос в последнем селекте по ячейкам, и выглядеть окончание там будет примерно так:
Код: sql
1.
2.
3.
4.
SELECT PADR(t1.code+'    '+NVL(t2.name_issl,''),nSizeName) AS idRow, CHRTRAN(STR(t1.lpu,3),' ','0') as idCol, ;
 PADR(LTRIM(STR(t1.mark)),nSizeCell) as mark ;
 FROM curData t1 LEFT JOIN issled t2 ON t1.code=t2.shifr ;
INTO CURSOR curTempD


Просто в Фоксе сложновато с CTE...
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38176809
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
94, если Вам для работы это нужно, то вот:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
#define CRLF CHR(13)+CHR(10)
#define True .t.
#define False .t.
set talk off
set safety off
close data all

nTableCount=3
***************************
SELECT 0
create table t1 (c1 C (10),c2 C(10),c3 C(10),c4 C(10))
insert into t1 value([],[Иванов],[Петров],[Сидоров])
insert into t1 value([математика],[1],[2],[3])
insert into t1 value([русский],[10],[20],[30])
insert into t1 value([литература],[10],[20],[30])
insert into t1 value([химия],[2],[20],[30])
use

SELECT 0
create table t2 (c1 C (10),c2 C(10),c3 C(10),c4 C(10))
insert into t2 value([],[Петров],[Сидоров],[Иванов])
insert into t2 value([химия],		[2],[20],[30])
insert into t2 value([литература],	[10],[20],[30])
insert into t2 value([математика],	[1],[2],[3])
insert into t2 value([русский],		[10],[20],[30])
USE

SELECT 0
create table t3 (c1 C (10),c2 C(10),c3 C(10),c4 C(10))
insert into t3 value([],[Отличник],[Сидоров],[Казлов])
insert into t3 value([математика],[1],[2],[3])
insert into t3 value([немецкий],[10],[20],[30])
USE
*************************** пример t1-t3. заменить на реальные имена таблиц
FOR nCounter=1 TO nTableCount
	USE [t]+TRANSFORM(nCounter) IN 0
next

f=FIELD(1)
com = ""

FOR nCounter=1 TO nTableCount
	com = com + IIF(EMPTY(com),"","UNION ")+" SELECT DISTINCT &F Name FROM t"+TRANSFORM(nCounter)+IIF(EMPTY(com)," INTO CURSOR PREDMET","")+" WHERE !EMPTY(&F) "
NEXT
&com

SELECT t1
COPY STRUCTURE exte TO tmp

USE tmp IN 0

com=[]
for nCounter=1 to nTableCount
	com=com+"go top in t"+TRANSFORM(nCounter)+CRLF
NEXT

for nCounter=1 to nTableCount
	com = com + IIF(nCounter>1,[ UNION ],[])+" SELECT EVALUATE([t"+TRANSFORM(nCounter)+".]+field_name) as FIO FROM tmp "+IIF(nCounter=1,[ INTO cursor STUDENT ],[])
NEXT
EXECSCRIPT(com)
SELECT student
INDEX on FIO TAG FIO
SELECT PREDMET
INDEX on Name TAG Name

SELECT 0
CREATE TABLE rez (PREDMET C(10),STUDENT C(10),KOLVO N(10))

FOR nCounter=1 TO nTableCount
	SELECT ([t]+TRANSFORM(nCounter))
	GO top
	SCATTER TO stud
	SKIP
	SCAN WHILE true
		SCATTER TO pr
		RowName=[p]+IIF(SEEK(pr(1),[PREDMET]),TRANSFORM(RECNO('predmet')),[0])
		FOR nC = 2 TO fcount()
			ColName = [s]+IIF(SEEK(stud(nC),[STUDENT]),TRANSFORM(RECNO([student])),[0])
			INSERT INTO rez VALUES (RowName,ColName,VAL(pr(nC)))
		NEXT
	ENDSCAN
NEXT
SELECT rez

SELECT predmet,student,SUM(kolvo) as kolvo FROM rez INTO CURSOR rezult GROUP BY 1,2

SELECT rezult
FOR nCounter=1 TO nTableCount
	USE IN ('t'+TRANSFORM(nCounter))
NEXT
USE IN Rez
SELECT Rezult
DO (_GENXTAB) WITH 'cross',,,,1,2,3,,,

SELECT tmp
GO top
SCATTER NAME rec
DO while RECCOUNT()<RECCOUNT([student])
	APPEND BLANK
	GATHER NAME rec
ENDDO
SCAN
	replace field_name WITH IIF(RECNO()=1,[PREDM_FIO],[FIO]+TRANSFORM(RECNO()))
ENDSCAN

replace ALL field_len WITH 10,field_dec WITH 0,field_type WITH [C]
SELECT 0
CREATE rez FROM tmp
SELECT * FROM student INTO ARRAY st
SELECT rez
APPEND blank
gather FROM st
SELECT cross
SCAN
	SCATTER TO pr
	GO VAL(subs(pr(1),2)) IN predmet
	pr(1)=predmet.name
	FOR nCounter=2 TO ALEN(pr)
		pr(nCounter)=STR(pr(nCounter))
	NEXT
	INSERT INTO rez FROM ARRAY pr
ENDSCAN
SELECT rez
GO top
BROWSE nowa



Если что-то учебное, то, конечно, фтопку, ибо бред. Зато не зависит от порядка предметов/ФИО в таблицах, лишь бы полей в них было менее 255
...
Рейтинг: 0 / 0
Как сложить поля в таблицах
    #38176861
94
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
94
Гость
GermanGM, Спасибо, я ваш код для себя попробую посмотрю что получится. Но я выше приведенный код взяла и вроде бы нормально. Только курсоре после объединения 12-ти таблиц и в екселе разница получилась на 12. Не знаю почему. в курсоре CurData 327470 записей а в экселе сумма всех 327458.
...
Рейтинг: 0 / 0
83 сообщений из 83, показаны все 4 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как сложить поля в таблицах
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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