Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 помогите с совмещением двух запросов. SQL Server  [new]
S_Yevgeniy
Member

Откуда:
Сообщений: 38
Здравствуйте!!!
Прошу прошения подскажите пожалуйста как лучше сделать.
У меня есть запрос на получения данных их двух таблиц.

SELECT (данные из таблицы PRIKAZ_OUT, и данные из таблицы PRIKAZ_IN )
FROM PRIKAZ_OUT INNER JOIN PRIKAZ_IN ON PRIKAZ_OUT.Vid_Op = PRIKAZ_IN.Vid_Op
AND PRIKAZ_OUT.Osnov = PRIKAZ_IN.Osnov AND
PRIKAZ_OUT.Shet_OUT = PRIKAZ_IN.Shet_OUT AND
PRIKAZ_OUT.NIN_CB = PRIKAZ_IN.NIN_CB AND PRIKAZ_OUT.Shet_IN = PRIKAZ_IN.Shet_IN

После чего в тех таблицах нужно удалить строки которые совместились по ряду параметров.

DELETE
WHERE (PRIKAZ_OUT.Vid_Op = PRIKAZ_IN.Vid_Op) AND (PRIKAZ_OUT.Osnov = PRIKAZ_IN.Osnov)


Заранее большое спасибо.
19 дек 09, 19:14    [8090845]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Glory
Member

Откуда:
Сообщений: 104760
S_Yevgeniy
После чего в тех таблицах нужно удалить строки которые совместились по ряду параметров.

Удалить сразу в двух таблицах что ли ?
19 дек 09, 19:29    [8090877]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
S_Yevgeniy
Member

Откуда:
Сообщений: 38
Glory,

да!!!
те две таблицы нужны для того чтобы совместить данные.
и получить совмещенную информацию в результате ответа на запросы а данные из которых получился данные результат в двух таблицах нужно удалить. Удалить сроку из PRIKAZ_IN и строку из PRIKAZ_OUT которые совместились.
19 дек 09, 19:33    [8090883]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
А может просто из запроса вытащить номера строки из тех таблиц а после удалить по номеру строки?
19 дек 09, 20:44    [8091081]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Big17
Member

Откуда:
Сообщений: 672
Используйте операторы EXCEPT и INTERSECT
http://msdn.microsoft.com/en-us/library/ms188055.aspx
19 дек 09, 23:20    [8091474]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
Big17,

Я пытался сделать через
UNION, EXCEPT, INTERSECT
В SQL Analyzer только выходит ошибка. Incorrect Syntax
20 дек 09, 03:53    [8091862]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
Наверное нельзя удалять строку если она формируется по порядковому номеру ( Identity)
20 дек 09, 04:20    [8091869]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
aleks2
Guest
declare @t table (Oid int, Iid int, primary key clustered(Oid, Iid))

insert @t(Oid, Iid)
SELECT PRIKAZ_OUT.id,PRIKAZ_IN.id
FROM PRIKAZ_OUT INNER JOIN PRIKAZ_IN ON PRIKAZ_OUT.Vid_Op = PRIKAZ_IN.Vid_Op 
AND PRIKAZ_OUT.Osnov = PRIKAZ_IN.Osnov AND 
PRIKAZ_OUT.Shet_OUT = PRIKAZ_IN.Shet_OUT AND 
PRIKAZ_OUT.NIN_CB = PRIKAZ_IN.NIN_CB AND PRIKAZ_OUT.Shet_IN = PRIKAZ_IN.Shet_IN 

--После чего в тех таблицах нужно удалить строки которые совместились по ряду параметров. 
delete PRIKAZ_OUT
WHERE PRIKAZ_OUT.id in (select Oid from @t)

delete PRIKAZ_IN
WHERE PRIKAZ_IN.id in (select Iid from @t)
20 дек 09, 05:42    [8091880]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Big17
Member

Откуда:
Сообщений: 672
SYevgeniy
Big17,

Я пытался сделать через
UNION, EXCEPT, INTERSECT
В SQL Analyzer только выходит ошибка. Incorrect Syntax



Вот этот способ должен проходить:
DELETE 
  FROM
 WHERE .... IN (SELECT .... INTERSECT SELECT ...)
20 дек 09, 14:42    [8092294]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Big17
SYevgeniy
Big17,

Я пытался сделать через
UNION, EXCEPT, INTERSECT
В SQL Analyzer только выходит ошибка. Incorrect Syntax



Вот этот способ должен проходить:
DELETE 
  FROM
 WHERE .... IN (SELECT .... INTERSECT SELECT ...)
Нельзя одной командой удалить данные из двух таблиц.
Исключение - удаление из таблицы с триггером на удаление, в котором удаляются данные из других таблиц.
Другое исключение - FOREIGN KEYs ON DELETE CASCADE, ссылающиеся на PK таблицы, из которой удаляем.
20 дек 09, 14:47    [8092301]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
malnevit
Member [заблокирован]

Откуда: -
Сообщений: 145
автор
Нельзя одной командой удалить данные из двух таблиц.

Это кто такое сказал ? Что за мастер такой ? :)
20 дек 09, 18:06    [8092586]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
malnevit
автор
Нельзя одной командой удалить данные из двух таблиц.

Это кто такое сказал ? Что за мастер такой ? :)
Это просто трёп такой?
Будьте любезны, напишите здесь скриптик.
Только без триггера и каскадного FK.
20 дек 09, 18:20    [8092616]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
malnevit
Member [заблокирован]

Откуда: -
Сообщений: 145
iap, про уровни изоляции транзакций читаем внимательно. Ага ?
20 дек 09, 18:23    [8092624]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
malnevit
iap, про уровни изоляции транзакций читаем внимательно. Ага ?
Неа.
Поподробнее об этом можно?
Скриптик-то от Вас дождёмся?

Да! Я тут подумал, что одной командой можно при желании назвать и вызов процедуры.
Понятно, что я имел в виду команду DELETE, если что...
20 дек 09, 18:30    [8092638]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Дад
Guest
malnevit,

Расскажите в чем мастер не прав?
20 дек 09, 18:37    [8092651]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
malnevit
Member [заблокирован]

Откуда: -
Сообщений: 145
Да лень. Запарился уже за столько лет рассказывать. Сам посмотри что пишет.
Ну нажми F1 да почитай, ну что за лень ? А то одной командой нельзя у него стереть данные. И ни одного коммита. Вот это код ? Где он ? Что это ? Это ХП или функция ? Может это пакет DTS ? И то не важно. Где транзакция ?
20 дек 09, 18:47    [8092673]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
malnevit
Да лень. Запарился уже за столько лет рассказывать. Сам посмотри что пишет.
Ну нажми F1 да почитай, ну что за лень ? А то одной командой нельзя у него стереть данные. И ни одного коммита. Вот это код ? Где он ? Что это ? Это ХП или функция ? Может это пакет DTS ? И то не важно. Где транзакция ?
Всё ясно.
20 дек 09, 19:08    [8092724]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
Спасибо!!!!
я сделал запрос из двух таблиц и заполнил номер строк из каждой и потом после того как все обработало удалил строки. Вот только боюсь как бы не нарваться на такой вариант что из одной таблицы строка совпадет с двумя из другой. И вообще как это избежать такую ситуацию.
20 дек 09, 19:29    [8092750]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
aleks2
Guest
SYevgeniy
Спасибо!!!!
я сделал запрос из двух таблиц и заполнил номер строк из каждой и потом после того как все обработало удалил строки. Вот только боюсь как бы не нарваться на такой вариант что из одной таблицы строка совпадет с двумя из другой. И вообще как это избежать такую ситуацию.


Ну и совпадет, ну шо такого страшного вам примерещилось?
20 дек 09, 20:00    [8092802]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Дад
Guest
iap
malnevit
Да лень. Запарился уже за столько лет рассказывать. Сам посмотри что пишет.
Ну нажми F1 да почитай, ну что за лень ? А то одной командой нельзя у него стереть данные. И ни одного коммита. Вот это код ? Где он ? Что это ? Это ХП или функция ? Может это пакет DTS ? И то не важно. Где транзакция ?
Всё ясно.

+1
20 дек 09, 20:26    [8092854]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Re: помогите с совмещением двух
Guest
+2 слабо ?
20 дек 09, 20:52    [8092926]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
aleks2,

Ну тык ошибка выползет!!!
20 дек 09, 21:13    [8092971]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
aleks2
Guest
SYevgeniy
aleks2,

Ну тык ошибка выползет!!!


Какая? С детства боитесь хомячков?
21 дек 09, 08:14    [8093687]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
SYevgeniy
Guest
aleks2,

Например вот такая
ADOQuery1 Cannot perform this operation on closed dataset.
21 дек 09, 16:44    [8096992]     Ответить | Цитировать Сообщить модератору
 Re: помогите с совмещением двух запросов. SQL Server  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
SYevgeniy
aleks2,

Например вот такая
ADOQuery1 Cannot perform this operation on closed dataset.
Это ошибка к серверу не имеет никакого отношения.
21 дек 09, 16:47    [8097018]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить