You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何通过中间表关联两个外键与同基表查询数据?

关联多账户表时名称字段重复的问题解决

表结构与需求

现有表结构

  1. tbl_CostType(成本核算表)
idDebitAccountIdCreditAccountId
12022
  1. tbl_Accounts(账户表)
idjoinAccountId
20j1
22j2
  1. tbl_JoinAccounts(关联账户表)
idName
j1David
j2Robert

查询需求

需要得到包含借贷方账户ID及对应名称的结果:

debitAccountIddebitNamecreditAccountIdcreditName
20David22Robert

问题分析

你当前的查询只关联了一次tbl_Accounts和tbl_JoinAccounts,且仅关联了贷方账户(CreditAccountId),导致debitName和creditName都取的是同一条关联账户的名称,所以结果重复。

解决方法

需要分别对借方、贷方账户各做一次关联,并用表别名区分不同的关联实例:

SELECT 
    ct.DebitAccountId,
    dj.Name AS debitName,
    ct.CreditAccountId,
    cj.Name AS creditName
FROM tbl_CostType ct
-- 关联借方账户对应的关联账户名称
INNER JOIN tbl_Accounts da ON ct.DebitAccountId = da.id
INNER JOIN tbl_JoinAccounts dj ON da.joinAccountId = dj.id
-- 关联贷方账户对应的关联账户名称
INNER JOIN tbl_Accounts ca ON ct.CreditAccountId = ca.id
INNER JOIN tbl_JoinAccounts cj ON ca.joinAccountId = cj.id

说明

  • 给tbl_CostType取别名ct,简化SQL写法
  • 借方账户关联:tbl_Accounts取别名da(debit account),对应关联的tbl_JoinAccounts取别名dj(debit join)
  • 贷方账户关联:tbl_Accounts取别名ca(credit account),对应关联的tbl_JoinAccounts取别名cj(credit join)
  • 通过两次独立的关联,分别获取借贷方对应的账户名称,避免字段值重复

内容的提问来源于stack exchange,提问作者aram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:11:09