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

Код:
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
 
Цитата:
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
 
в 1.027.1 - банки уже вынесены в отдельную таблицу.
28.11.2011 10:02
 
сейчас идет отбор банков, а как их всем скопом удалить? я посмотрел у нас почти 6 тысяч банков в программе залито. Используется максимум 300, ну пусть даже 1000, не лопатить же в ручную 5000 банков.
28.11.2011 10:07
 
можно изменить запрос - вместо селекта - делете
Код:
DELETE
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
но сначала надо убедиться - что отбирается только то - что надо удалить...
28.11.2011 10:10
 
Цитата:
konst можно изменить запрос - вместо селекта - делете
Код:
DELETE
  FROM supermag.sabanks a
 WHERE a.ID NOT IN (SELECT a.bankid
                      FROM supermag.smclientbanks a);
но сначала надо убедиться - что отбирается только то - что надо удалить...
да уж, убедиться это не то слово, не используется 4000 банков.

Спасибо за помощь.
28.11.2011 10:23
 
Цитата:
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
 
Нет, этого делать как раз нельзя.
28.11.2011 10:31
 
Выдает ошибку ORA-00933:SQL command not properly anded


Опции темы



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

Все в прочитанное - Донат - RSS - - Карта - Вверх

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