【问题标题】:Query to call 2 foreign key on 1 primary column查询在 1 个主列上调用 2 个外键
【发布时间】:2022-01-24 19:24:24
【问题描述】:

我有一个 SQL Server 表,我在其中插入帐户数据,例如 A/C#,这是 varchar 字段,我将 id 作为主键。

在其他收费表中,帐户# 存储在 2 个不同的列中,分别是利息 A/C# 和利润 A/C#; A/C#在行中不同

客户检索需要显示的费用数据和帐号。

由于两者都是不同的字段,我应该为两个字段都做外键到主表

请以最佳方式指导。

    Account Table
    ----------------------
   id | AccountNumber
    -----------------
    1 | 4321
    --------------
    2 | 5432
    -------------- 
    3 | 6543
    -------------- 
    4 | 7654
    -------------- 
    5 | 8765
    --------------

Charges Table
        ----------------------
       id | interestA/c# |Profit A/c#
        -----------------------------
        1 | 2            |3
        -----------------------------
        2 | 3            |4
        -----------------------------
        3 | 4            |5
        -----------------------------
        4 | 5            |1
        ----------------------------- 
   

输出:从费用中选择 *;

---------------
 1 | 5432 |6543
 ---------------
 2 | 6543 |7654
 ---------------
 3 | 7654 |8765
 ---------------
 4 | 8765 |4321
 ---------------

【问题讨论】:

  • 请展示你目前的尝试并解释卡在哪里
  • “我应该对主表的两个字段都做外键吗?” —> 是的
  • SELECT c.id, a.InterestA/C#, a.ProfitA/C# FROM Charges c INNER JOIN Account a ON a.id = c.[interestA/C#] 我正在使用上述查询和它没有用。

标签: sql sql-server tsql


【解决方案1】:

Charges 表加入Account 表,两次

SELECT c.id, a1.AccountNumber, a2.AccountNumber
FROM Charges c
INNER JOIN Account a1
    ON a1.id = c.[interestA/c#]
INNER JOIN Account a2
    ON a2.id = c.[Profit A/c#]
ORDER BY c.id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多