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

Вниз

sql запрос на сравнение   Найти похожие ветки 

 
mike-d ©   (2002-12-02 21:30) [0]

Есть две таблицы, структура одинакова, ключ - первое поле IdClient. Для сравнения используются поля Name, Space, People ну и еще пару... Требуется:
Вернуть в запросе из первой таблицы те записи, для которых при совпадении IdClient не совпадают значения любого из перечисленных полей со второй таблицей.
Примечание: Local SQL, BDE.


 
bander_log   (2002-12-02 21:41) [1]

А что будет использоваться в качестве получателя результата?


 
bander_log   (2002-12-02 21:50) [2]

Можно так:
for j := 1 to T1.RecordCount do
begin
if Search_T2 then
begin
if (T2[1] <> T1[1]) or
(T2[2] <> T1[2]) or
.....
(T2[8] <> T1[8]) then
{вывод резутьтата T1}
end;
end;
где Search_T2 любая логическая функция поиска - можешь свою сделать


 
mike-d ©   (2002-12-02 21:54) [3]

Мда...
И возразить-то нечего.


 
bander_log   (2002-12-02 22:00) [4]

Если не Paradox а SQL - можно все это в хранимой процедуре сделать по запросу и использовать в качестве анализатора и получателя только один элемент StoredProc....


 
Max Zyuzin ©   (2002-12-02 22:04) [5]

select tab1.* from tab1, tab2
where tab1.IdClient = tab2.IdClient
and tab1.F1 <> tab2.F1
..
and tab1.FN <> tab2.FN


Что нить такое пробовал??


 
Max Zyuzin ©   (2002-12-02 22:07) [6]

Упс... стормозил :( извиняюсь некдачно прочитал условия....
надо вот так

select tab1.* from tab1, tab2
where tab1.IdClient = tab2.IdClient
and not
((tab1.F1 = tab2.F1)
or (tab1.F2 = tab2.F2)
..
or (tab1.FN <> tab2.FN))



 
mike-d ©   (2002-12-02 22:25) [7]


> Max Zyuzin © (02.12.02 22:07)

Вроде все о"кей. С первого взгляда выбирает как нужно, завтра еще покопаю. Спасибо


 
Max Zyuzin ©   (2002-12-02 22:31) [8]

>mike-d © (02.12.02 22:25)
угу... если че свисти :)


 
Max Zyuzin ©   (2002-12-02 23:18) [9]

В последнем условии конечно же =


 
mike-d ©   (2002-12-02 23:22) [10]

Это просек. Вот интересно (не спец я еще в SQL), если сделать
> select tab1.* from tab1, tab2
то она выберет записи из tab1 столько раз каждую, сколько записей в tab2. Это нормально или я чего не так написал?


 
Max Zyuzin ©   (2002-12-02 23:32) [11]

Все правильно... именно это она и выбирает... (если я правильно помню то она выбирает декартово произведение)
Если добавить строку
where tab1.IdClient = tab2.IdClient
То выберет только те записи, у которых эти 2 поля совпадают.
А вообще лучше прочитать что нить про SQL


 
mike-d ©   (2002-12-02 23:34) [12]

Ok! Пора спать, еще пересечемся здесь. Спасибо за поддержку.


 
Max Zyuzin ©   (2002-12-02 23:37) [13]

Да без проблем!
(оффтоп) :) Хорошо тебе :)) А я еще на работе сижу :(



Страницы: 1 вся ветка

Текущий архив: 2002.12.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-61829
Cr@sh
2002-11-28 13:23
2002.12.19
Как вы относитесь к добавлению новых букв в русский алфавит? И...


1-61698
viper
2002-12-09 10:16
2002.12.19
Вопрос с передачей фокуса!


4-61886
Oleg_G
2002-11-05 22:30
2002.12.19
Вопрос в том, как можно разделить поток данных


14-61817
Феликс
2002-11-29 15:41
2002.12.19
Теряюсь в непонятках


3-61423
Павка
2002-11-29 07:42
2002.12.19
Отчет в Ворде и Экселе