powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пропадает около 200 записей из 278 тыс при SELECT SQL
11 сообщений из 11, страница 1 из 1
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544727
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Столкнулся в такой проблемой - делаю объеденение 2 баз через SELECT SQL и выяснилось что пропадает около 200 записей (278428 vs 278271). В чем может быть проблема? Причем я даже в одной из исходных баз конкретно видел 2 записи (это телефоны, соотв. по номеру) а в результирующей только первую из них...
В чем может быть дело?
Код: 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.
SELECT ;
     INT(VAL(abonent)) as abonent,;
     CTOD(day+'.'+month+'.'+year) as date ,;
     hour + ':' + minute as time ,;
     INT(VAL(abonent2)) as abonent2,;
     talk_sec ,;
     .f. as Regged ,;
     CTOT(day+'.'+month+'.'+year+' '+hour + ':' + minute) as datetime ,;
     trunk1 ;
  FROM curLocalTrafic ;
  WHERE NOT EMPTY(year);
        AND IIF(m.llOnly1Phone, abonent = m.lnPhone, .T.);
UNION ;
SELECT ;
     INT(VAL(abonent)) as abonent,;
     CTOD(day+'.'+month+'.'+year) as date ,;
     hour + ':' + minute as time ,;
     INT(VAL(abonent2)) as abonent2,;
     time2 as talk_sec,;
     .f. as Regged ,;
     CTOT(day+'.'+month+'.'+year+' '+hour + ':' + minute) as datetime ,;
     trunk1 ;
  FROM curInterTrafic;
  WHERE NOT EMPTY(year);
        AND IIF(m.llOnly1Phone, abonent = m.lnPhone, .T.);
  INTO CURSOR curWholeTraficT ;
  READWRITE
При этом условию WHERE NOT EMPTY(year) в каждой из баз соответствует только одна запись, а m.llOnly1Phone = .F. постоянно
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544778
SELECT ALL ...
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544804
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я и предположил слово ALL является необязяельным, включаемым по умолчанию, но все же проверил сделав SELECT ALL ; - результат абсолютно аналогичный...
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544806
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл отметить что VFP 8.0
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544811
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UNION работает по умолчанию, как DISTINCT на уровне разных SELECT.
Вместо UNION надо UNION ALL

С уважением, Алексей
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544844
Алексей О
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CTAC-KOПричем я даже в одной из исходных баз конкретно видел 2 записи (это телефоны, соотв. по номеру) а в результирующей только первую из них...

При этом условию WHERE NOT EMPTY(year) в каждой из баз соответствует только одна запись


Кажется, вот эту ОДНУ запись вы и получаете
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544853
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:)
Спасибо! Помогло!
Не знал такого ньюанса...
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34544866
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Aleksey-K: это я про UNION ALL писал. еще раз спасибо!

2Алексей О: я получаю не 2 записи, а на 200 меньше, о чем Вы?
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34546814
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
При таком количестве записей можно что-то и проглядеть, фильтр на условия, попробуйте к каждой таблице, возможно где либо нет даты или что там еще за отбор.
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34610795
Кроме объединения инструкцией UNION ALL нужно проверить есть ли отмеченные для удаления записи. При SET DELETED ON или по другому SET('DELETED') = 'ON' --- RECCOUNT('ваша_таблица') [Общее количество записей] не будет равной количеству записей если имеются помеченные для удаления calculate cnt() in alias() to m.cnt [Количество записей в зависимости от SET DELETED]

** 1 вариант **
select ' your_table '
m.rec_cnt = reccount(alias())
set deleted on
calculate cnt() in alias() to m.cnt
*!*(m.cnt =m.rec_cnt) = .F.
set deleted off
calculate cnt() in alias() to m.cnt
*!*(m.cnt =m.rec_cnt) = .T.
set deleted on

** 2 вариант **
set deleted on
select ' your_table '
select count(*) as cnt, reccount(alias()) as cnt_rec from alias() into cursor t1
*!*(t1.cnt = t1.cnt_rec) = .F.
set deleted off
select count(*) as cnt, reccount(alias()) as cnt_rec from alias() into cursor t2
*!*(t2.cnt = t2.cnt) = .T.
set deleted on
...
Рейтинг: 0 / 0
Пропадает около 200 записей из 278 тыс при SELECT SQL
    #34610812
Кроме объединения инструкцией UNION ALL нужно проверить есть ли отмеченные для удаления записи. При SET DELETED ON или по другому SET('DELETED') = 'ON' --- RECCOUNT('ваша_таблица') [Общее количество записей] не будет равной количеству записей если имеются помеченные для удаления calculate cnt() in alias() to m.cnt [Количество записей в зависимости от SET DELETED]

** 1 вариант **
select ' your_table '
m.rec_cnt = reccount(alias())
set deleted on
calculate cnt() in alias() to m.cnt
*!*(m.cnt =m.rec_cnt) = .F.
set deleted off
calculate cnt() in alias() to m.cnt
*!*(m.cnt =m.rec_cnt) = .T.
set deleted on

** 2 вариант **
set deleted on
select ' your_table '
select count(*) as cnt, reccount(alias()) as cnt_rec from alias() into cursor t1
*!*(t1.cnt = t1.cnt_rec) = .F.
set deleted off
select count(*) as cnt, reccount(alias()) as cnt_rec from alias() into cursor t2
*!*(t2.cnt = t2.cnt) = .T.
set deleted on
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пропадает около 200 записей из 278 тыс при SELECT SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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