我有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,因此当您查询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