2015-06-24 108 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 
相關問題