SQL Server - 查询显示人和他的银行名称是一行吗?

时间:2016-01-14 08:25:18

标签: sql sql-server

我有这些表来处理:

TRANS

ID       HPARENT1       HPERSON
--------------------------------
70001    60001          100
60001    50001          100
50001    NULL             2

,其中

  1. ID从7开始是收费
  2. ID从6开始是收据
  3. ID从5开始是同一TRANS
  4. 中的银行存款条目

    在此示例中,70001是收据60001支付的费用,50001是收据的银行存款条目。

    HPERSON收费和收据是指向其收取和支付的人。

    银行存款分录的HPERSON是银行的ID。

    BANK

    ID       BankName
    --------------------------
    2        MyBank
    

    PERSON

    ID       FIRSTNAME       LASTNAME
    ---------------------------------
    100      Barry           Allen
    

    我想在输出中包含人名和他的银行名称。

    Barry Allen       MyBank
    

    识别个人银行的方法是,找到他的存款条目(50001),然后从中找到hperson(2)(这是银行的ID)

    我想我必须自己加入TRANS表。

    不确定如何。

    有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

您可以通过提供不同的“版本”别名来加入表格。我假设这个hierarki只有3个级别。

SELECT
  p.FIRSTNAME, p.LASTNAME, b.BankName
FROM
  PERSON p
JOIN
  TRANS t1
ON t1.HPERSON = p.id
JOIN
  TRANS t2
ON t2.ID = t1.HPARENT1
JOIN
  TRANS t3
ON t3.ID = t2.HPARENT1
JOIN
  BANK b
ON
  b.ID = t3.HPERSON