[ОТВЕТИТЬ]
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
28.11.2011 17:08
OlegON
 
давай полный вывод, с тем, как вводишь.
30.11.2011 10:14
alex_K
 
Захожу в консоль, подцепляюсь sys ом к ораклу, ввожу команду SELECT a.ID, a.title
FROM supermag.sabanks a
WHERE a.ID NOT IN (SELECT a.bankid
FROM supermag.smclientbanks a);
идет отбор, показывает почти 4000 банков не используется, набираю
DELETE a.ID, a.title
FROM supermag.sabanks a
WHERE a.ID NOT IN (SELECT a.bankid
FROM supermag.smclientbanks a);
вываливается вышеуказанная ошибка
30.11.2011 10:31
OlegON
 
присмотрись, после delete лишнее вводишь
30.11.2011 10:52
akonev
 
Цитата:
alex_K Захожу в консоль, подцепляюсь sys ом к ораклу, ввожу команду SELECT a.ID, a.title
FROM supermag.sabanks a
WHERE a.ID NOT IN (SELECT a.bankid
FROM supermag.smclientbanks a);
идет отбор, показывает почти 4000 банков не используется, набираю
DELETE a.ID, a.title
FROM supermag.sabanks a
WHERE a.ID NOT IN (SELECT a.bankid
FROM supermag.smclientbanks a);
вываливается вышеуказанная ошибка
DELETE
FROM supermag.sabanks a
WHERE a.ID NOT IN (SELECT a.bankid
FROM supermag.smclientbanks a);
30.11.2011 11:35
alex_K
 
Понял, спасибо Andrew_Konev что написал еще это )))
30.11.2011 15:05
akonev
 
*169 Всегда пожалуйста. Хотя на самом деле, у меня просто прокси глюкнул и я сообщение Олега не увидел. Так бы писать не стал. Уверен, ты бы сам сравнил и увидел, что именно лишнее
01.12.2011 09:12
alex_K
 
Цитата:
Andrew_Konev *169 Всегда пожалуйста. Хотя на самом деле, у меня просто прокси глюкнул и я сообщение Олега не увидел. Так бы писать не стал. Уверен, ты бы сам сравнил и увидел, что именно лишнее
OFF: я так и сделал, решил тему закрыть и увидел твое сообщение.
Опции темы


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

 

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