任何人都可以帮助我,我会在这做什么?

时间:2015-06-24 13:19:50

标签: sql

我有2张桌子。我的表结构是这样的:

Table 'customer' 
( 
    cust_id (PK), 
    cust_name, 
    cust_balance 
); 
and Table 'account' 
( 
    acc_id (PK), 
    cust_id(FK) --relating to customer table  
); 

客户数据:

name  cust_id
scott c100 
ford  c200 

帐户数据:

scott personal a100 
scott joint    a300
ford  personal a200
ford  joint    a300 

然后,帐户表的cust_id列中的值是多少?如果我正在进入斯科特的身份证,那么在查询时它会显示只有斯科特有2个账户,但事实并非如此,福特也有2个账户。那我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

您可以为帐户表提供双重PK,acc_id和cust_id,因此当您查询scott拥有的所有帐户时,您将获得他自己的帐户以及联合帐户,同样适用于福特。也许还要在帐户表中添加一个标志,以表明该帐户是否是一个联合帐户?

SELECT COUNT(*) FROM account
WHERE cust_id = searchValue

如果您输入的是苏格兰威士忌,那么您将获得2分。

答案 1 :(得分:0)

如果Scott,c100和Ford,c200都有一个acc_id a300的联合账户,那么acc_id a300应该在账户表中出现两次。

帐户表应该是这样的:

--------------------------
acc_id | cust_id
--------------------------
a300   | c100
a300   | c200
a100   | c100
a200   | c200

当您使用Scott的ID查询时,您只会看到两个帐户,因为这是真的,Scott有两个帐户。

要查看每个客户有多少帐户要使用此查询:

select cust_id, count(acc_id) as num_accounts
from account
group by cust_id