Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пропадает около 200 записей из 278 тыс при SELECT SQL / 11 сообщений из 11, страница 1 из 1
23.05.2007, 11:01
    #34544727
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадает около 200 записей из 278 тыс при SELECT SQL
Привет!
Столкнулся в такой проблемой - делаю объеденение 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
23.05.2007, 11:13
    #34544778
Пропадает около 200 записей из 278 тыс при SELECT SQL
SELECT ALL ...
...
Рейтинг: 0 / 0
23.05.2007, 11:19
    #34544804
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадает около 200 записей из 278 тыс при SELECT SQL
Как я и предположил слово ALL является необязяельным, включаемым по умолчанию, но все же проверил сделав SELECT ALL ; - результат абсолютно аналогичный...
...
Рейтинг: 0 / 0
23.05.2007, 11:19
    #34544806
CTAC-KO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадает около 200 записей из 278 тыс при SELECT SQL
забыл отметить что VFP 8.0
...
Рейтинг: 0 / 0
23.05.2007, 11:20
    #34544811
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадает около 200 записей из 278 тыс при SELECT SQL
UNION работает по умолчанию, как DISTINCT на уровне разных SELECT.
Вместо UNION надо UNION ALL

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

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


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

2Алексей О: я получаю не 2 записи, а на 200 меньше, о чем Вы?
...
Рейтинг: 0 / 0
23.05.2007, 19:16
    #34546814
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Пропадает около 200 записей из 278 тыс при SELECT SQL
При таком количестве записей можно что-то и проглядеть, фильтр на условия, попробуйте к каждой таблице, возможно где либо нет даты или что там еще за отбор.
...
Рейтинг: 0 / 0
21.06.2007, 13:51
    #34610795
Пропадает около 200 записей из 278 тыс при SELECT SQL
Кроме объединения инструкцией 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
21.06.2007, 13:53
    #34610812
Пропадает около 200 записей из 278 тыс при SELECT SQL
Кроме объединения инструкцией 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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Пропадает около 200 записей из 278 тыс при SELECT SQL / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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