2015-07-10 69 views
-1

有人可以幫助我,教我如何查詢。請..如何通過加入它們來查詢這4個表格?

當戶表

Pawner table

項目表

Item table

loan_assignment表

Loan table

貸款表

loan_assignment table

當我加入這4代表的結果應該是這樣的 report 我已經查詢過這一點,但結果是多餘的。

這是我的查詢:

SELECT a.date_loan_granted, p.pawner_id, p.name, c.item_name, l.principal_loan 
FROM loan_assignment a 
JOIN pawner p ON p.pawner_id = a.pawner_id 
JOIN item c ON c.item_id = a.item_id 
JOIN loan l ON l.loan_id = a.loan_id; 

此查詢的結果上面的^這是

enter image description here

+0

嘗試在聲明中添加DISTINCT –

+1

爲什麼所有ID都是1?作爲標識符的ID應該增加,這可能是這個奇怪結果的原因,它看起來更像是交叉連接。 – Spidey

+0

@vkp http://imgur.com/moaGPhA它仍然會產生同樣的結果。該行應產生10-Jul-2015 | 1 |邁克爾·潘加尼班先生|筆記本| P500 |典當和2015年8月10日| 1 |邁克爾·潘加尼班先生|筆記本| P300 |典當 – soyan

回答

0

我認爲這會爲你做,althought,注意*我相信的你缺少表LOAN_Assignment中的一列(pawner_id)

SELECT a.date_loan_granted, p.pawner_id, p.name, c.item_name, l.principal_loan 
FROM loan_assignment a 
JOIN loan l ON l.loan_id = a.loan_id; 
JOIN pawner p ON p.pawner_id = l.pawner_id 
JOIN item c ON c.item_id = a.item_id 
+0

當我插入這可能會發生一個錯誤,說明未知列'pawner_id'字段列表 – soyan

+0

在您的文章中,我開始懷疑您在顯示模式時混淆了貸款和貸款分配表? –

+0

對不起我很困惑 – soyan

1

解決您的問題:在loan_assignment中,將loan_id設置爲500到1,將300設置爲2,然後在貸款中爲付款設置爲null的值將loan_id設置爲1,將200設置爲loan_id爲2。一旦使用不同的問題,您的問題

這些表你的父子關係去如下

當戶

PK: Pawner_ID 
FK: Pawnshop_ID 

Loan_assignment

PK: None 
FK: Pawnshop_ID, Pawner_ID, Item_ID, Loan_ID 

項目

PK: Item_ID 

貸款

PK: Loan_ID 

眼下結構應該是:

A Pawn Shop can have multiple pawners. 
A Pawner can have multiple loans. 
A Loan can have one or many items. 
An Item can have multiple payments. 

這裏有一些建議,因爲使用不同的解決你的表是不是不夠好,解決你的結構問題。

貸款轉讓:所有貸款屬於典當行和當戶(爲什麼不乾脆讓他們屬於抵押人,並刪除了當鋪,因爲這些信息是多餘的,可以從父子關係中找到)。這張表需要自己的主鍵,因爲每筆貸款的處理方式都不相同。這個表格應該包含初始貸款,其餘的所有交易的數額應該被轉移到一個支付表中,其中PK和自己的PK都歸還給它所屬的貸款。

項目表: Item_ID字段是此表的主鍵。這些值必須是唯一的,因爲每個項目都是一個需要分開處理的庫存。您可能需要在此表中將FK鏈接回貸款分配,以便貸款可以分配多個項目。

貸款方式:此表需要將一些信息移至貸款表,有些移至建議的支付表。

表格結構並不適合你想要做的事情。我建議在這一點上網,並尋找貸款或典當行數據庫存在和工作的父母子女關係。

+0

@loxp即使我使用了不同的 – soyan

+0

,它仍然返回4行是的,我有一個錯誤,它是因爲兩美元的金額。我已經更新了我的回覆。 –

+0

@loxp所以你告訴我貸款分配中的loan_id需要不同於對方嗎? – soyan