Как сделать это в одном запросе - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть следующая схема реляционной таблицы

Customer(customer_id, customer_name, customer_city)
Branch(branch_id, branch_name, branch_city)
Account(account_id, balance, customer_id, branch_id)

Имя вопроса каждому клиенту, у которого есть счета в филиалах как минимум в двух разных городах. У меня работает следующий запрос, но только если я сначала создаю представление. Есть ли другой способ сделать это вместе?

Мое решение, которое работает:

Create view Cust as select c.Customer_Name, c.customer_ID, b.branch_name, b.branch_city from Customer as c inner Join Account as a on c.customer_ID=a.customer_ID join Branch as b on b.branch_id=a.branch_id
SELECT * FROM Cust as c inner join Cust as c1 on c.CustomerID=c1.CustomerID and c.branch_city <> c1.branch_city

1 Ответ

0 голосов
/ 19 апреля 2020

Вот один вариант использования exists с совокупным запросом

select c.*
from customer c
where exists (
    select 1
    from account a 
    inner join branch b on b.branch_id = a.branch_id
    where a.customer_id = c.customer_id
    group by c.customer_id
    having min(b.branch_city) <> max(b.branch_city)
)
...