Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Вычитание таблиц   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.036 c
1-1081355432
Distortion
2004-04-07 20:30
2004.04.25
Как в TMainMenu поставить разделитель?


6-1077359189
ProNix
2004-02-21 13:26
2004.04.25
TwebBrowser и фреймы


3-1080378157
unicode
2004-03-27 12:02
2004.04.25
Не могу правильно написать запрос!


8-1074176296
_none_
2004-01-15 17:18
2004.04.25
BUG: некорректный вывод строки, содержащей слэши, через GDI+


7-1078397406
Mamontenok
2004-03-04 13:50
2004.04.25
ОС