2015-06-24 70 views
0

我有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个账户。那么,我该如何做到这一点?

+0

你到底想达到什么目的?您是否想要为每位客户计算帐户数量?你说你“输入”斯科特的身份证,然后找回斯科特的两个账户,当通过斯科特身份证查询账户时,这不是期望的结果吗? –

回答

0

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

SELECT COUNT(*) FROM account 
WHERE cust_id = searchValue 

如果你要进入斯科茨或浅滩价值,你会得到2

0

如果斯科特,C100,和福特,C200,都具有与ACC_ID A300的联合帐户,然后ACC_ID A300应该在帐户表中出现两次。

帐户表应该是这样的:

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

当您查询使用斯科特的ID,你只能看到两个账户,因为这是真的,斯科特有两个帐户。

要看到每一个客户都想要多少帐户使用此查询:

select cust_id, count(acc_id) as num_accounts 
from account 
group by cust_id 
相关问题