Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Отобрать используемые банки, затем удалить ненужные : Супермаг Плюс (Супермаг 2000)

22.11.2024 22:03


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, время: 22:03.

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