|
|
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Помогите новичку! Как сделать сравнение двух таблиц? Не могу никак запустить правильный цикл. Задача такая, есть две таблицы (допустим A и B)нужно между ними сделать сравнение, и в таблице A оставить те записи которых нет в B, и наоборот в таблице B оставить то, чего нет в A. Cравнение нужно проводить по трем полям одновременно, при этом время ±2 минуты считается нормой. ПРИМЕР: название поля, тип данных, (длина строки) | Таблица А | |________________________________________________| |нмр,С,(9) | врем_нач,C,(19) |нмр_2, С, (18) | |_________|___________________|__________________| |313852857|05.06.2006 15:28:33 |0070951273278 | |_________|___________________|__________________| |313861503|04.06.2006 13:20:22 |007333653320 | |_________|___________________|__________________| |313825789|06.06.2006 15:28:33 |0313242569 | |----------|----------------------|---------------------| | Таблица B | |_______________________________________________| |ном,N,(6) | врем_нач,T,(8) | ном2,C ,(17) | |_________|___________________|_________________| | 52438 |02.06.2006 15:27:45 |0073842540390 | |_________|___________________|_________________| | 21173 |02.06.2006 13:20:20 |0075932450124 | |_________|___________________|_________________| | 25789 |06.06.2006 15:27:42 |0313242569 | |----------|----------------------|-------------------| Больше буду рад не готовому решению, а направляющему совету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 11:35 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Направление?! Ну предложу сосздать индекс по искомым(Сравниваемым) полям (У тя в примере все поля строковые?!) Далее перебор одной с индексным поиском во второй если есть то удаляем, если нет то оставляем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:10 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
таблицы обе проиндексированы. Я пробовал примерно так DO while !EOF() SEEK... и так далее, в общем, не получается правильно составить условие для SEEK. А если про пример, то у меня в одной таблице все поля строковые, в другой числовые и DateTime. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 12:36 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. Строка индекса = если поля символьные то поле1+поле2+поле3 если поля не символы то <Функция преобразования>(поле1)+<Функция преобразования>(поле2)+<Функция преобразования>(поле3) Или же посморти Help по команде Delete Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 13:57 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Вы привели все поля таблиц? Или все-таки есть первичные ключи? С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 14:44 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
А может собрать все в одну таблицу и убрать дубликаты по индексированию CANDIDATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2006, 19:48 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
to AlikWishin пардон, а IndexSeek() что за функция? to Aleksey-K НЕт, не все поля привел есть еще, но это те, по которым нужно осуществить сверку to BMJ Тоже вариант. Только есть одна проблема, повторюсь, дело в том, что один и тот же звонок отображается в двух разных таблицах с разным временем , соответственно можно ли будет корректно удалить "дубликат"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2006, 09:26 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
kruzzНЕт, не все поля привел есть еще, но это те, по которым нужно осуществить сверку Так все-таки есть первичный ключ у таблиц? Если есть, то это сильно упрастит запрос. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2006, 09:47 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
kruzzto AlikWishin пардон, а IndexSeek() что за функция? да тоже самое что и Seek(), только с установкой идти к найденой записи или нет! Посмотри Help. И ответь на вопрос Aleksey-K ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2006, 13:38 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Aleksey-K Первичного индекса не было, но если нужно, сделаю. Хотя не очень понимаю что это =\ (Да поможет мне Справка!) AlikWishin А, все, нашел... Дело в том, что у нас все пользуют 6 FOX, а там этой функции нет. Я себе поставил сейчас 8, в которой INDEXSEEK() уже есть. А что, есть большая разница между этими функциями? Нужно ведь чтобы она возвращала данные с найденного поля, а без перехода на это поле никак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2006, 14:33 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
Пусть в таблицах есть уникальные идентификаторы строк (Первичные ключи - PK) и пусть PK генерятся с помощью свойства столбца AUTOINC (автоинкремент). Пусть они называются PK и имеют тип Integer. Тогда можно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2006, 16:10 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
kruzz ... AlikWishin А, все, нашел... Дело в том, что у нас все пользуют 6 FOX, а там этой функции нет. Я себе поставил сейчас 8, в которой INDEXSEEK() уже есть. А что, есть большая разница между этими функциями? Нужно ведь чтобы она возвращала данные с найденного поля, а без перехода на это поле никак? У меня VFP 6 SP3 Там IndexSeek() есть. Принципиально разницы для твоей задачи не вижу(Просто дело привычки. У меня задачи с выходом на найденую запись, поэтому и использую IndexSeek() ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2006, 18:08 |
|
||
|
Cравнение двух таблиц...
|
|||
|---|---|---|---|
|
#18+
А если надо оставить только те записи, которых нет в другой таблице, то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2006, 09:40 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33896781&tid=1591038]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 237ms |
| total: | 425ms |

| 0 / 0 |
