我有 3 个表如下:
Customer (CustomerName , CustomerCity , CustomerStreet)
Branch (BranchName , BranchCity)
Deposit (CustomerName , BranchName , AccountNumber , Balance)
Run Code Online (Sandbox Code Playgroud)
在这里,我向您展示上表的示例数据:
Customer ('John','City1','Street1')
('Lili','City2','street2')
Branch ('Branch1','Kaj')
('Branch2','Bahar')
('Branch3','Bahar')
('Branch4','Bahar')
Deposit ('John','Branch1',12,1000)
('Lili','Branch1',123,1222)
('Lili','Branch2',124,45233)
('Lili','Branch3',345,6000)
('Lili','Branch4',567,5600)
Run Code Online (Sandbox Code Playgroud)
所以根据上面的信息,我需要一个查询来给我在 Bahar 的所有分行都有存款的 CustomerName 。
我应该在输出中看到“Lili”,因为它在 Bahar 的所有分支都有存款,但我不应该看到 John,因为它只在 Bahar 的一个分支中有存款。
我尽力编写查询,但我不能。你能帮我解决这个问题吗?
对于您的问题,我有两个解决方案:解决方案 1,我使用 Not Exists , Except
Select distinct C.CustomerName
From customers C
where NOT EXISTS ((Select BranchName
From Branch
Where BranchCity='Bahar')
EXCEPT
(Select BranchName
From Deposit a
where A.CustomerName = C.CustomerName))
Run Code Online (Sandbox Code Playgroud)
在解决方案 2 中,我使用 Not Exists ,
Select Distinct C.CustomerName
From Customers C
Where NOT EXISTS (Select BranchName
From Branch b
Where BranchCity='Bahar'
and NOT EXISTS (select BranchName
from Deposit a
where a.CustomerName=C.CustomerName
and a.BranchName=b.branchName))
Run Code Online (Sandbox Code Playgroud)
上面的每个查询都会回答您的查询并为您提供所需的结果。
归档时间: |
|
查看次数: |
1911 次 |
最近记录: |