[ОТВЕТИТЬ]
Опции темы
28.11.2011 08:38  
alex_K
Задача стоит в следующем, в программе банков занесено тьма тьмущая, не спрашивайте зачем их туда забивали, их просто залили, когда торговый отдел добавляет контрагента, они мучаются с поиском банка, в общем попросили удалить все не нужные банки. Вопрос: как отобрать все используемые банки и как удалить скопом все неиспользуемые банки?
 
28.11.2011 09:42  
konst
Можно попробовать этим запросом отобрать неиспользуемые банки

Код:
SELECT a.ID, a.title
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
Кстати многое еще зависит от версии СМ... до какой то версии отдельной таблицы с банками вообще не было...
 
28.11.2011 09:53  
alex_K
Цитата:
Сообщение от konst
Можно попробовать этим запросом отобрать неиспользуемые банки

Код:
SELECT a.ID, a.title
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
Кстати многое еще зависит от версии СМ... до какой то версии отдельной таблицы с банками вообще не было...
Версия 1.028
 
28.11.2011 09:57  
konst
в 1.027.1 - банки уже вынесены в отдельную таблицу.
 
28.11.2011 10:02  
alex_K
сейчас идет отбор банков, а как их всем скопом удалить? я посмотрел у нас почти 6 тысяч банков в программе залито. Используется максимум 300, ну пусть даже 1000, не лопатить же в ручную 5000 банков.
 
28.11.2011 10:07  
konst
можно изменить запрос - вместо селекта - делете
Код:
DELETE
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
но сначала надо убедиться - что отбирается только то - что надо удалить...
 
28.11.2011 10:10  
alex_K
Цитата:
Сообщение от konst
можно изменить запрос - вместо селекта - делете
Код:
DELETE
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
но сначала надо убедиться - что отбирается только то - что надо удалить...
да уж, убедиться это не то слово, не используется 4000 банков.

Спасибо за помощь.
 
28.11.2011 10:23  
alex_K
Цитата:
Сообщение от konst
можно изменить запрос - вместо селекта - делете
Код:
DELETE
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
но сначала надо убедиться - что отбирается только то - что надо удалить...
В скобках я так понимаю тоже SELECT поменять на DELETE ???
 
28.11.2011 10:28  
Mtirt
Нет, этого делать как раз нельзя.
 
28.11.2011 10:31  
alex_K
Выдает ошибку ORA-00933:SQL command not properly anded
 
 


Опции темы



Часовой пояс GMT +3, время: 04:58.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.