如何从另一个表中查看同一个表中的信用和借记的名称

时间:2014-11-29 00:13:59

标签: sql postgresql

我必须使用表格,表格帐户和表格实体,信用卡和借记卡在表格帐户中是number = id, 我想写一个查询,结果是信用卡号的名称和借方号码的名称以及表格实体的日期和价值

表中的一些数据:

table entities:    
id  credit   debit  value  date
1   100      101    5000   01/01/2014

table accounts:    
id   name
100  Mark
101  Jone

来自我的数据库的一些数据。所有我需要一个查询来显示这个结果:

1, Mark, Jone, 5000, 01/01/2014

1 个答案:

答案 0 :(得分:1)

您需要加入帐户表两次(一次是信用名称,一次是借记名称):

SELECT
    e.id, 
    credit_account.name AS CreditName, 
    debit_account.name  AS DebitName, 
    e.value, 
    e.date 
FROM entities AS e
JOIN accounts AS credit_account ON e.credit = credit_account.id
JOIN accounts AS debit_account  ON e.debit  = debit_account.id

此查询产生此输出:

id          CreditName           DebitName            value       date
----------- -------------------- -------------------- ----------- ----------
1           Mark                 Jone                 5000        2014-01-01

假设entity表中每行的credit和debit列都有一个值。如果其中一个可能丢失,您可能希望使用LEFT JOIN代替在缺少值的列中获取空值。

Sample SQL Fiddle