Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-1081107526
Reeg
2004-04-04 23:38
2004.04.25
Отчеты


9-1067788347
DillerXX
2003-11-02 18:52
2004.04.25
Дерево


14-1079678868
Красная Майка
2004-03-19 09:47
2004.04.25
KIMP - лог встречи


4-1077650363
BorH
2004-02-24 22:19
2004.04.25
Как получить содержимое чужого ListView??


1-1081232335
_newver_
2004-04-06 10:18
2004.04.25
StringGrid и ширина ячейки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский