Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вычитание таблиц [D7]


Lam ©   (2004-03-31 15:28:00) 

делаю на 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

а результат надо дописать к таблице В

под рукой нет кода запроса, который пробовал написать((
буду благодарен за любые идеи. или примеры ))


bushmen   (2004-04-01 12:53:00) [1]

Используй ExecSQL, а не Open


Strelka   (2004-04-01 12:33:00) [2]

Само вычитание работает, но не могу добавить результ в таблицу, вылетает с ошибкой Query1:CommandText does not return a result set


LexusR   (2004-04-01 06:52:00) [3]


insert into tablB (nameB,kodB)
(select nameA, kodA from tablA
where not exists(select 1 from tabB
                 where nameB=nameA and kodB=kodA )
)


Lam   (2004-03-31 20:06:00) [4]

ошибка..


Lam   (2004-03-31 19:03:00) [5]

табл А               табл В
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

соррьки))


bushmen   (2004-03-31 16:38:00) [6]

>Еще по KodA и KodB. см пример в начале.

>табл А               табл В
>id nameA  kodA      id nameA  kodA

Поля KodB я в упор не вижу!


Lam   (2004-03-31 16:37:00) [7]

>>Lam
>
>А по всем полям надо искать отсутствие или только по nameA ?
по двум полям. Еще по KodA и KodB. см пример в начале.
а если поелй больше? лана, потом разберусь с дольшим количеством


bushmen   (2004-03-31 16:36:00) [8]

>Курдль ©
Это только на совпадение поля NameA. А тут если я правильно понял, еще и KodA тоже должен не совпадать


Курдль   (2004-03-31 16:31:00) [9]


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:25:00) [10]

>В идеале - устраняет дублирующиеся записи.

Да, но только внутри таблицы, без учета другой


Курдль   (2004-03-31 16:25:00) [11]

Не, не так! Не понЯл Ваших устремлений! :)


Курдль   (2004-03-31 16:24:00) [12]


> А причем тут distinct ?

В идеале - устраняет дублирующиеся записи.
Но решение Вашей проблемы здесь ( unionбез allустраняет их сам):


select NAME_A as NAME from TABLE_A
union
select NAME_B as NAME from TABLE_B


stone   (2004-03-31 16:19:00) [13]

подробности в Books Online, которая идет в составе MSSQL


bushmen   (2004-03-31 16:18:00) [14]

>Lam

А по всем полям надо искать отсутствие или только по nameA ?


Lam   (2004-03-31 16:16:00) [15]

>есть not exists

подробности в массы.


bushmen   (2004-03-31 15:56:00) [16]

>Курдль ©

А причем тут distinct ?


Курдль   (2004-03-31 15:54:00) [17]

distinct


stone   (2004-03-31 15:51:00) [18]


> используя MINUS, кажется

есть not exists


Наверх

Титульная страница Поиск, карта сайта Написать письмо