【问题标题】:SQL Foreign Key with multiple values in the same column同一列中具有多个值的 SQL 外键
【发布时间】:2021-10-24 14:23:41
【问题描述】:

我正在学习 SQL 并试图找到以下问题的解决逻辑:

表 A 有 2 列 - HL_ACCT、CUST

表 B 有 2 列 - CUST、SAV_ACCT。

CUST 是外键。

想象以下场景: HL_ACCT-1 有 2 个 CUST -> CUST_1 和 CUST_2

我需要从表 B 中获取 SAV_ACCT,该表具有 与它关联的 CUST_1 和 CUST_2,即具有多个值的外键。

编辑:考虑表 A 是 Account_Customer 表,其中包含房屋贷款帐户和客户详细信息,并且具有一对多关系。 (HL可以同时以“主持有人”和“共同持有人”的名义)

表 B 是具有多对多关系的客户和储蓄账户详细信息。 “Master Holder”可以持有多个储蓄账户。 “共同持有人”也可以持有多个储蓄账户。 “Master Holder”和“Co-Holder”可以持有多个联名账户。

在我的场景中,我需要为 Home Loan 帐户获取所有联名帐户。

【问题讨论】:

  • 请提供样本数据和期望的结果。
  • 不确定您的意思?如果您为问题中的表使用更有意义的名称以及可能的一些示例数据,这可能会有所帮助
  • 另外,我真的不明白这些列应该如何相互引用。根据您的描述,它似乎是完全相同的表两次,只是它们的列被翻转了
  • 大家好,感谢所有答案/cmets。我已经编辑了我的问题以使其更清楚。

标签: sql foreign-keys teradata


【解决方案1】:

您可以使用聚合和having。如果我正确地遵循了数据模型:

select b.link_acct
from a join
     b
     on a.cust = b.cust
where a.cust in ('cust_1', 'cust_2')
group by b.link_acct
having count(distinct a.cust) = 2;
 

【讨论】:

    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多