|
|
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
Привет! Столкнулся в такой проблемой - делаю объеденение 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:01 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
SELECT ALL ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:13 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
Как я и предположил слово ALL является необязяельным, включаемым по умолчанию, но все же проверил сделав SELECT ALL ; - результат абсолютно аналогичный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:19 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
забыл отметить что VFP 8.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:19 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
UNION работает по умолчанию, как DISTINCT на уровне разных SELECT. Вместо UNION надо UNION ALL С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:20 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
CTAC-KOПричем я даже в одной из исходных баз конкретно видел 2 записи (это телефоны, соотв. по номеру) а в результирующей только первую из них... При этом условию WHERE NOT EMPTY(year) в каждой из баз соответствует только одна запись Кажется, вот эту ОДНУ запись вы и получаете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:27 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
:) Спасибо! Помогло! Не знал такого ньюанса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:29 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
2Aleksey-K: это я про UNION ALL писал. еще раз спасибо! 2Алексей О: я получаю не 2 записи, а на 200 меньше, о чем Вы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 11:32 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
При таком количестве записей можно что-то и проглядеть, фильтр на условия, попробуйте к каждой таблице, возможно где либо нет даты или что там еще за отбор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2007, 19:16 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
Кроме объединения инструкцией 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 13:51 |
|
||
|
Пропадает около 200 записей из 278 тыс при SELECT SQL
|
|||
|---|---|---|---|
|
#18+
Кроме объединения инструкцией 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 13:53 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=193&tid=1589114]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
98ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 400ms |

| 0 / 0 |
