表:
CUSTOMER
(CUSTOMER-NAME(P),CUSTOMER-STREET,CUSTOMER- CITY)BRANCH
(BRANCH-NAME(P),BRANCH-CITY,ASSETS)ACCOUNT
(帐号(P),分支,平衡)LOAN
(贷款号码(P),分行名称,金额)DEPOSITOR
(CUSTOMER-NAME(P),ACCOUNT-NUMBER(P))BORROWER
(CUSTOMER-NAME(P),LOAN-NUMBER(P))标有P
的属性是表格的主键。
以上是关系模式,我必须为以下查询编写SQL语法:
在“诺伊达”的所有分支中查找拥有帐户的客户的姓名(诺伊达是地方的名称)
我尝试解决这个问题,但输出结果是那些在诺伊达的某个分支机构拥有帐户的客户。如何为所有人做到这一点?
我对SQL有疑问,即使在非主键上我们也可以结合两种关系吗?例如:
depositor.account-number = account.account-number and account.branch-name = branch.branch-name
在上面的陈述中,branch-name
不是帐户的主键,而是分支。因此,是上面的权利吗?
答案 0 :(得分:2)
这应该是正确的查询
select *
from CUSTOMER c
where not exists (
select BRANCH-NAME
from BRANCH
where BRANCH-CITY = 'Noida'
minus
select BRANCH-NAME
from ACCOUNT
join DEPOSITOR d using (ACCOUNT-NUMBER)
where d.CUSTOMER-NAME = c.CUSTOMER-NAME
)