2015-07-10 74 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