|
|
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Помогите, пожалуста, получить дельту данных. существует таблица "договора" за май и таблица "договора" за июнь. причем в договора за июнь входят данные за май и июнь. помогите получить дельту этих данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2007, 16:24 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
как Вы умучили, продавцы полосатых палочек ... нарисуй сюда таблички и нарисуй результат, который хочется получить народ посмотрит и покажет ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2007, 16:28 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
структура таблицы договоров за май и июнь - идентична и приведена снизу. CREATE TABLE dogovor ( DOG NUMBER(4), FOMS NUMBER(3), LID NUMBER(4), LID_ENT NUMBER(14), NOMDOG VARCHAR2(14 BYTE), TYPEDOG NUMBER(1), DATE_POD DATE, PLACE VARCHAR2(50 BYTE), DATE_REG DATE, DATE_S DATE, DATE_E DATE, DATE_NULL DATE, NUM_ZAS NUMBER(6), CAUSE NUMBER(2), FREEDATE NUMBER(1), DATE_REZ DATE, KOD_REZ NUMBER, TYPE_PLACE NUMBER(1), KOD_PLACE NUMBER(6), TYPE_ENT NUMBER(2), PRINT_RUC NUMBER(1), NUM_INOSTR NUMBER(6), DOGOVOR_ID NUMBER ) таблица договора за май называются dogovor_may, таблица договора за июнь называются dogovor_iun. в таблице dogovor_iun содержатся данные за июнь и за май. необходимо выловить дельту данных. только договора за июнь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2007, 16:52 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
У меня есть две банки в которые насыпано много чего. Помогите мне получить дельту этих банок. Структура банок совершенно одинаковая. Сможете? Ну, откуда же нам знать, какой признак (значение поля) отвечает за то, что данный договор относится к маю или июню? Откуда нам знать, по каким признакам Вы собираетесь определять, что договор за май входящий в таблицу за июнь уже есть или его нет в таблице за май? Что является уникальным идентификатором записи и есть ли он вообще? Вопросов "вагон и маленькая тележка". Поскольку Вам подобные вопросы даже в голову не пришли, то Вас и просили предоставить пример ДАННЫХ. Чтобы Вы просто "ткнули пальцем": вот такие записи есть в первой таблице, вот такие во второй. В результате должны остаться вот эти записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2007, 20:02 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
здравствуйте уважаемые, есть похожая задача... формулировка есть таблицы table1 и table2 структура таблиц одинаковая например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. необходимо вывести в таблицу table3 (с точно такой же структурой), данные переносятся при удовлетворении след. условий: 1. запись есть в таблице 2, но ее нет в таблице 1 (т.е. просто table2 minus table1) 2. запись сравниваеться по всем полям, при малейшем отличии считать ее другой записью... ps задача в оракле решаеться просто ... но в фокс про нет операции MINUS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 06:41 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
ВладимирМУ меня есть две банки в которые насыпано много чего. Помогите мне получить дельту этих банок. Структура банок совершенно одинаковая. Сможете? Ну, откуда же нам знать, какой признак (значение поля) отвечает за то, что данный договор относится к маю или июню? Откуда нам знать, по каким признакам Вы собираетесь определять, что договор за май входящий в таблицу за июнь уже есть или его нет в таблице за май? Что является уникальным идентификатором записи и есть ли он вообще? Вопросов "вагон и маленькая тележка". Поскольку Вам подобные вопросы даже в голову не пришли, то Вас и просили предоставить пример ДАННЫХ. Чтобы Вы просто "ткнули пальцем": вот такие записи есть в первой таблице, вот такие во второй. В результате должны остаться вот эти записи. Ну зачем Вы так... Судя по представленной таблице - это какая-то из "больших" СУБД. Тогда, может человеку нужен простой MINUS этих таблиц: Код: plaintext 1. 2. 3. P.S. Только тогда абсолютно непонятно, почему человек обратился к Лисоводам, а не на соответсвующий форум... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 06:47 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий P.S. Только тогда абсолютно непонятно, почему человек обратился к Лисоводам, а не на соответсвующий форум... а мне надо в фоксе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 06:56 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repzздравствуйте уважаемые, есть похожая задача... формулировка есть таблицы table1 и table2 структура таблиц одинаковая например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. необходимо вывести в таблицу table3 (с точно такой же структурой), данные переносятся при удовлетворении след. условий: 1. запись есть в таблице 2, но ее нет в таблице 1 (т.е. просто table2 minus table1) 2. запись сравниваеться по всем полям, при малейшем отличии считать ее другой записью... ps задача в оракле решаеться просто ... но в фокс про нет операции MINUS Нет - это не значит невозможно... Надо простьо подумать как выкрутиться... Например: - сделать LEFT OUTER JOIN и отметить некоторым признаком (полем) те записи, которые одинаковые. - Отобрать те записи, у которых признак отсутствует... Пример: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 07:26 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Станислав С...кий Пример: Код: plaintext 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. Пример выводит записи из таблицы1, которых нет в таблице2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 07:31 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
спасибо огромное за наводку ... а можно сделать чтобы структура таблиц (названия полей) не имела значения (полей просто там много ... порядка 40 - описывать и сопровождать будет проблемно) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 12:55 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repzнеобходимо вывести в таблицу table3 (с точно такой же структурой), данные переносятся при удовлетворении след. условий: 1. запись есть в таблице 2, но ее нет в таблице 1 (т.е. просто table2 minus table1) 2. запись сравниваеться по всем полям, при малейшем отличии считать ее другой записью... ps задача в оракле решаеться просто ... но в фокс про нет операции MINUS По английски это звучит примерно как "NOT IN" или "NOT EXISTS". Ну, и используй соответсвующие опции! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Правда, подобный запрос предполагает, что ни одно из полей ни в одной из таблиц не может принимать значение NULL. Хотя, если считать что NULL в одной таблице не равен NULL в другой таблице, то и в этом случае все будет корректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 12:55 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
к огромному сожалению в полях есть NULL значения, и это нельзя считать изменениями ... как быть ? NVL в подзапросе выдает ошибку ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 13:51 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repzк огромному сожалению в полях есть NULL значения, и это нельзя считать изменениями ... как быть ? NVL в подзапросе выдает ошибку ... Сделать через промежуточную таблицу/курсор. Т.е. сначала выбираем записи в курсор, затем используем курсор в последующих запросах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 13:57 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repzк огромному сожалению в полях есть NULL значения, и это нельзя считать изменениями ... как быть ? NVL в подзапросе выдает ошибку ... Какая же у Вас версия FoxPro? NVL() была введена с VFP3. Или Вы ее как-то некорректно используете? Впрочем, можно написать так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Или вместо Table1.id IS NULL Использовать IsNull(Table1.id) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 14:29 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ... IsNull(Table1.id) получаем ту же ошибку SQL: Error Correlation Fields по решению с выборкой в курсоры, так тоже не получиться ... потому что 1. делаем курсоры с nvl по всем полям для table1 и table2 2. применяем к таблицам решение уважаемого "ВладимирМ" 3. в результате получаем разрушенную таблицу разниц (дельту) по сути (так как все null убиты NVL) уважаемые коллеги... есть другое решение ... может стоит написать функцию которая по таблице динамически сгенерит перечень значений через запятую ? и просто сравнить значения в псевдостолбцах ? но к сожалению не бум бум в фоксе - поэтому не могу даже сказать как динамически это генерить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 14:40 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repz ВладимирМ ... IsNull(Table1.id) получаем ту же ошибку SQL: Error Correlation Fields по решению с выборкой в курсоры, так тоже не получиться ... потому что 1. делаем курсоры с nvl по всем полям для table1 и table2 Это Вы сами придумали. Мы с ВладимиромМ об этом не говорили Repz 2. применяем к таблицам решение уважаемого "ВладимирМ" 3. в результате получаем разрушенную таблицу разниц (дельту) по сути (так как все null убиты NVL) В моем решении выдавался один лишний столбец, у ВладимираМ лишних столбцов нет. И структура данных сохраняется... Repz уважаемые коллеги... есть другое решение ... может стоит написать функцию которая по таблице динамически сгенерит перечень значений через запятую ? и просто сравнить значения в псевдостолбцах ? но к сожалению не бум бум в фоксе - поэтому не могу даже сказать как динамически это генерить А не проще будет генерировать динамически строку запроса и выполнять его через макроподстановку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 14:52 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
Repz ВладимирМ ... IsNull(Table1.id) получаем ту же ошибку SQL: Error Correlation Fields А синтаксис Table1.id IS NULL работает? Какая у Вас версия FoxPro? Repzуважаемые коллеги... есть другое решение ... может стоит написать функцию которая по таблице динамически сгенерит перечень значений через запятую ? и просто сравнить значения в псевдостолбцах ? Вам же надо сравнить значение не одного поля, а ВСЕХ полей. Как Вы сформируете списки в этом случае? Если по каждому полю в отдельности, то факт того, что значение первого поля есть в списке значений первого поля, а значение второго поля есть в списке значений второго поля ничего не говорит о том, присутствуют ли эти значения в одной записи или в разных. Впрочем, такой список уже есть. Это другая таблица. Можно вместо запроса выполнять сканирование. Хотя это сильно замедлит процесс. Впрочем, можно сделать кобинацию запроса и сканирования. Коррелированный запрос по NOT EXISTS автоматически включит в результат выборки все записи имеющие хотя бы в одном поле значение NULL. Затем выполнить поиск (сканирование) только среди записей с NULL значениями на предмет их существования и удалить лишние. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2007, 14:52 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
ВладимирМ А синтаксис Table1.id IS NULL работает? Какая у Вас версия FoxPro? Работает ... работаем на FoxPro 9.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2007, 09:05 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
задачу все еще не получается решить ... вопрос закономерный - можно как либо подсчитать некоторую контрольную сумму всего кортежа ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 10:02 |
|
||
|
помогите получить дельту данных
|
|||
|---|---|---|---|
|
#18+
можно как либо подсчитать некоторую контрольную сумму всего кортежа ? А зачем для сравнения записей контрольная сумма? Она ведь может повторяться у разных записей? Короче, лучше прямого сравнения полей ничего не придумано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 10:10 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34702961&tid=1588891]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
77ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 425ms |

| 0 / 0 |
