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

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.