Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Разность таблиц (число прочтений - 3596 )
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Разность таблиц
13. Марта 2007 :: 09:59
Печать  
Можно осуществить разность таблиц средствами скуля? типа
SELECT      БЛ
FROM      Состав
WHERE      БЛ NOT IN
     (      SELECT БЛ
           FROM Меню);
если таблицы являются выгрузками прямых запросов из двух одинаковых ИБ ?
ткните в пример
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Разность таблиц
Ответ #1 - 13. Марта 2007 :: 11:10
Печать  
Ничё не понятно. Что означает "из двух одинаковых ИБ"? Их структуры одинаковы? Ты хочешь сделать одновременно селект из разных ИБ + разность этих селектов одним запросом?
Короче: поподробней.
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Разность таблиц
Ответ #2 - 13. Марта 2007 :: 11:44
Печать  
насколько понял надо вывести различия в 2 наборах данных.
как вариант:
drop table #t
select  * into #t
from (
     select t1.* from t1
           left join t2 on
                 t1.f1 = t2.f1
                 and t1.f2 = t2.f2
                 and t1.f3 = t2.f3
     where
           t2.f1 is null
     union all
     
     select  t2.*
     from
           t2
           left join t1 on
                 t2.f1 = t1.f1
                 and t2.f2 = t1.f2
                 and t2.f3 = t1.f3
     where
           t1.f1 is null

     ) vt
select * from #t
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Разность таблиц
Ответ #3 - 13. Марта 2007 :: 12:41
Печать  
У меня в голове только 2 варианта навскидку (могу глубоко заблюждаться)

1.
"
| SELECT              *
| FROM                table1 CROSS JOIN table2  
| WHERE                "+СтрокаУсловийДляОпределенияНеравныхСтрок+ "";

Правда как в общем виде получить подобную строку условий я пока не представляю

2.  вызрузить оба запроса в 2 ИТЗ,  Подмигивание сделать разность и загрузить обратно на сервер через ВыполнитьSQL_из_ТЗ

В качестве идеи  Со сжатыми губами

PS Нашел вот еще что
Работа с множествами в Transact-SQL
http://www.aspnetmania.com/Articles/Article.aspx?ID=41



  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Разность таблиц
Ответ #4 - 14. Марта 2007 :: 08:34
Печать  
Дело до разниц таблиц пока не дошло .... Застрял на второй таблице. Второй запрос к другой ИБ, типа
Код
Выбрать все
select
  ..
 into #t2
 



после того как обработка 1с завершилась,  смотрю Sysobjects, а там только первая таблица, от первого запроса, второй нету.

делаю проверку
     ТЗ2=рс.ВыполнитьИнструкцию(ТекстЗапроса2); // тот самы й второй запрос
     
     ТекстЗапроса3 = "SELECT * FROM #t2";                    // перечитываю тут же врем таблицу
     ТЗ2=рс.ВыполнитьИнструкцию(ТекстЗапроса3);
     ТЗ2.Выгрузить(ТЗ_);                                              // выгружаю на форму

результат есть. Получается что временная таблица вторая убивается почти сразу, а мне это не желательно , как быть ? Если неправ подскажите в чем ?

ЗЫ:
Еще покопавшись обнаружил, что если запрос на разность запускать под ODBCRecordset  который связан с текущей ИБ, то недоступна #t2,  а если под ODBCRecordset который связан с другой ИБ ( по которой запросом получаю #t2) то недоступна #t1
« Последняя редакция: 14. Марта 2007 :: 09:52 - ev-kov »  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Разность таблиц
Ответ #5 - 14. Марта 2007 :: 09:16
Печать  
To Phoenix
А разве код даст разность? что то это похоже на пересечение.
     select t1.* from t1
          left join t2 on
                t1.f1 = t2.f1
                and t1.f2 = t2.f2
                and t1.f3 = t2.f3
     where 
          t2.f1 is null
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: Разность таблиц
Ответ #6 - 14. Марта 2007 :: 10:14
Печать  
запрос должен вернуть различные строки в 2наборах данных
взял простой пример, рабочий не стал кидать, суть одна и та же.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Разность таблиц
Ответ #7 - 17. Марта 2007 :: 12:49
Печать  
А что если применить ср-ва индексированной таблицы?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Разность таблиц
Ответ #8 - 19. Марта 2007 :: 01:50
Печать  
to Вадимко так и сделал
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать