Abed Al Rahman Hussien Balhawan Ответов: 1

Sql запрос удалить все кредиты взятые из филиалов расположенных в Нидхэм Сити


table BRANCH(BRANCH_NAME,BRANCH_CITY,ASSETS)

table loan(LOAN_NUMBER,AMOUNT,BRANCH_NAME)









Delete all loans taken from branches located in Needham city.


Что я уже пробовал:

delete
from loan l
where b.branch_name=l.branch_name 
and b.branch_city='Needham city'

1 Ответов

Рейтинг:
10

MadMyche

Поэтому мы хотим сделать некоторое выборочное удаление кредитов на основе Филиал Город, но у нас нет этой колонки в нашей таблице кредитов, только Название Филиала- Звучит как хорошее место для начала

DELETE
FROM   Loan
WHERE  Branch_Name -- to be continued
Теперь у нас есть таблица ветвей, в которой есть имена и города внутри нее... давайте посмотрим, что это даст нам что-то вроде этого
SELECT Branch_Name
FROM   Branch
WHERE  Branch_City = 'Needham city'

Теперь, чтобы использовать это в команде DELETE, мы будем использовать IN чтобы вызвать SELECT в качестве подзапроса
DELETE
FROM   Loan
WHERE  Branch_Name IN (
     SELECT Branch_Name
     FROM   Branch
     WHERE  Branch_City = 'Needham city'
)


Abed Al Rahman Hussien Balhawan

удивительное уточнение , oracle10g дает мне эту ошибку

ORA-02292: нарушено ограничение целостности (SYS.FK_LOAN_TAKE) - найдена дочерняя запись

MadMyche

Это было бы результатом ... внешний ключ связь с другой таблицей - вероятно, существует таблица с платежами или балансами, которая ссылается на таблицу займов. "Дочерние" записи в этой таблице должны быть удалены, прежде чем вы сможете удалить "родительскую" запись в таблице займов

Abed Al Rahman Hussien Balhawan

спасибо за разъяснение