Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизВычитание таблиц Найти похожие ветки
← →
Lam (2004-03-31 15:28) [0]делаю на MSSQL 2000 бд. Как делать запросом (используя MINUS, кажется) вычитание таблиц? Как получить те записи в таблице, которые отсутствуют в другой? Например, есть 2 таблицы
в таблице А поля id, NameA,KodA записи уникальны
в таблице В поля id, NameВ,KodВ
табл А табл В
id nameA kodA id nameA kodA
1 с 72 1 a 72
2 а 73 2 в 72
3 а 72
4 в 72
5 с 73
результат
1 с 72
2 а 73
3 с 73
а результат надо дописать к таблице В
под рукой нет кода запроса, который пробовал написать((
буду благодарен за любые идеи. или примеры ))
← →
stone © (2004-03-31 15:51) [1]
> используя MINUS, кажется
есть not exists
← →
Курдль © (2004-03-31 15:54) [2]
distinct
← →
bushmen © (2004-03-31 15:56) [3]>Курдль ©
А причем тут distinct ?
← →
Lam (2004-03-31 16:16) [4]>есть not exists
подробности в массы.
← →
bushmen © (2004-03-31 16:18) [5]>Lam
А по всем полям надо искать отсутствие или только по nameA ?
← →
stone © (2004-03-31 16:19) [6]подробности в Books Online, которая идет в составе MSSQL
← →
Курдль © (2004-03-31 16:24) [7]
> А причем тут distinct ?
В идеале - устраняет дублирующиеся записи.
Но решение Вашей проблемы здесь (union
безall
устраняет их сам):
select NAME_A as NAME from TABLE_A
union
select NAME_B as NAME from TABLE_B
← →
Курдль © (2004-03-31 16:25) [8]Не, не так! Не понЯл Ваших устремлений! :)
← →
bushmen © (2004-03-31 16:25) [9]>В идеале - устраняет дублирующиеся записи.
Да, но только внутри таблицы, без учета другой
← →
Курдль © (2004-03-31 16:31) [10]
select NAME_A
from TABLE_A A
where not exists (select 1 from TABLE_B B where B.NAME_B = A.NAME_A)
← →
bushmen © (2004-03-31 16:36) [11]>Курдль ©
Это только на совпадение поля NameA. А тут если я правильно понял, еще и KodA тоже должен не совпадать
← →
Lam (2004-03-31 16:37) [12]>>Lam
>
>А по всем полям надо искать отсутствие или только по nameA ?
по двум полям. Еще по KodA и KodB. см пример в начале.
а если поелй больше? лана, потом разберусь с дольшим количеством
← →
bushmen © (2004-03-31 16:38) [13]>Еще по KodA и KodB. см пример в начале.
>табл А табл В
>id nameA kodA id nameA kodA
Поля KodB я в упор не вижу!
← →
Lam (2004-03-31 19:03) [14]табл А табл В
id nameA kodA id nameB kodB
1 с 72 1 a 72
2 а 73 2 в 72
3 а 72
4 в 72
5 с 73
результат
1 с 72
2 а 73
3 с 73
соррьки))
← →
Lam (2004-03-31 20:06) [15]ошибка..
← →
LexusR © (2004-04-01 06:52) [16]
insert into tablB (nameB,kodB)
(select nameA, kodA from tablA
where not exists(select 1 from tabB
where nameB=nameA and kodB=kodA )
)
← →
Strelka © (2004-04-01 12:33) [17]Само вычитание работает, но не могу добавить результ в таблицу, вылетает с ошибкой Query1:CommandText does not return a result set
← →
bushmen © (2004-04-01 12:53) [18]Используй ExecSQL, а не Open
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.031 c