|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
Adaptive Server Enterprise/15.5/EBF 18655 Хочу найти строки с ID во 2-й таблице которых нету во 1-й таблице. Без использования exists. Код: sql 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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
В первом select выдает ID ID 1 null 2 null 3 null 4 null Во 2-м, что и требовалось. ID ID 3 null 4 null Вопрос, почему 1-й запрос не работает так как 2-й ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 17:47 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
JenyaD, А почему это без использования EXISTS? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 21:27 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
Вопрос, почему 1-й запрос не работает так как 2-й ? Потому что семантика вычисления значений полей до и после JOIN определена для ANSI JOIN и не определена для T-SQL join. Кстати, первый запрос мог бы и работать. В смысле, иногда он работает, в зависимости от плана запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2013, 21:32 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
MasterZivВопрос, почему 1-й запрос не работает так как 2-й ? Потому что семантика вычисления значений полей до и после JOIN определена для ANSI JOIN и не определена для T-SQL join. ... и вот по этой причине я никогда не пишу запросы в t-sql синтаксисе :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 03:34 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
White Owl, Ну, я тоже не пишу, но на самом деле не по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2013, 20:47 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
JenyaDХочу найти строки с ID во 2-й таблице которых нету во 1-й таблице. Точнее. Хочу найти строки с ID в 1-й таблице которых нету во 2-й таблице. Планы одинаковые : 1-й aseisql |ROOT:EMIT Operator (VA = 4) | | |RESTRICT Operator (VA = 3)(0)(0)(0)(0)(13) | | | | |NESTED LOOP JOIN Operator (VA = 2) (Join Type: Left Outer Join) | | | | | | |SCAN Operator (VA = 0) | | | | FROM TABLE | | | | #TBL1 | | | | Table Scan. | | | | Forward Scan. | | | | Positioning at start of table. | | | | Using I/O Size 2 Kbytes for data pages. | | | | With LRU Buffer Replacement Strategy for data pages. | | | | | | |SCAN Operator (VA = 1) | | | | FROM TABLE | | | | #TBL2 | | | | Table Scan. | | | | Forward Scan. | | | | Positioning at start of table. | | | | Using I/O Size 2 Kbytes for data pages. | | | | With LRU Buffer Replacement Strategy for data pages. 2-й aseisql |ROOT:EMIT Operator (VA = 4) | | |RESTRICT Operator (VA = 3)(0)(0)(0)(0)(13) | | | | |NESTED LOOP JOIN Operator (VA = 2) (Join Type: Left Outer Join) | | | | | | |SCAN Operator (VA = 0) | | | | FROM TABLE | | | | #TBL1 | | | | Table Scan. | | | | Forward Scan. | | | | Positioning at start of table. | | | | Using I/O Size 2 Kbytes for data pages. | | | | With LRU Buffer Replacement Strategy for data pages. | | | | | | |SCAN Operator (VA = 1) | | | | FROM TABLE | | | | #TBL2 | | | | Table Scan. | | | | Forward Scan. | | | | Positioning at start of table. | | | | Using I/O Size 2 Kbytes for data pages. | | | | With LRU Buffer Replacement Strategy for data pages. Кстати 1-й запрос, если убрать условие проверки на null выполняется правильно. Выводит всё из первой таблицы и там где нет соответствий по ID null'ы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 11:47 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
JenyaD, Он и если не убирать условие, тоже выполняется правильно... Ты собственно что хочешь? Уже ю все ясно должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:01 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
Та ясно, что нужно использовать left join или exists. В моём случае лучше left join т.к. я не только на null проверяю в оригинальном запросе, а типа такого isnull(status, 99) in (1, 2, 99). Просто всегда хочу понять суть, так мне легче понять тот или иной момент. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 12:46 |
|
Найти строки в одной таблице, отсутствующие в другой ASE
|
|||
---|---|---|---|
#18+
JenyaD, http://infocenter.sybase.com/help/topic/com.sybase.dc37429_1250/html/whatsnew/CHDCHBCF.htm?resultof=%22%74%2d%73%71%6c%22%20%22%73%71%6c%22%20%22%6a%6f%69%6e%22%20 Sybase recommends that applications use ANSI outer joins because they unambiguously specify whether the on or where clause contains the predicate, which is ambiguous when you use Transact-SQL outer joins. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2013, 23:21 |
|
|
start [/forum/topic.php?fid=55&fpage=12&tid=2010013]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
287ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 395ms |
0 / 0 |