gpt4 book ai didi

sql - 不确定如何加入这两个表

转载 作者:行者123 更新时间:2023-12-04 21:13:17 24 4
gpt4 key购买 nike

我很难为这个问题想出一个标题,因为我不确定如何做我想做的事,所以我不确定在这种情况下“加入”是否是最好的术语。

我的数据库中有两个表,Plans 和 Assumptions,如下所示:

计划表

Plankey  ass1 ass2 ass3 ass4aplan    0    6    5    7bplan    2    0    7    4

假设表

assType refKey assName"ass1"  0      "gender factors a""ass1"  2      "gender factors b""ass2"  0      "age factors a""ass2"  6      "age factors b""ass3"  5      "inflation factors a""ass3"  7      "inflation factors b""ass4"  4      "tax factors a""ass4"  7      "tax factors b"

我需要进行一个查询(或一组查询和子查询),为我提供每个计划所用假设的名称:

Plankey  assName1           assName2         assName3               assName4aplan    "gender factors a" "age factors b"  "inflation factors a"  "tax factors b"bplan    "gender factors b" "age factors a"  "inflation factors b"  "tax factors a"

是的……我知道。驴名。另外,即使这不是最好的设计,那也是我无法控制的。我只是想查询一组现有数据。

我还应该提一下,有超过 500 种假设类型(ass1、ass2、...、ass500 等),每种假设类型可能有超过 100 种假设 refKey/名称。

我正在努力解决这个问题,这看起来很容易,但我就是不知道该怎么做。有任何想法吗?也许我缺少一个概念,因为我还没有遇到过它。我可以将列名 assName1、assName2 等硬编码到我的查询中,但即便如此,我也不确定如何从 Assumptions 表中“查找”assNames,因为我似乎正在从同一个表中查找多个我的结果中的列。

编辑:我忽略了一些非常重要的事情。 refkey 在假设表中被重新使用。因此,assName 由 assType 和 refKey 的组合唯一确定。我很抱歉没有在我的例子中说清楚!在我查看答案之前,我忘记了这一点。我也更改了示例以反射(reflect)这一点。

EDIT2:我正在使用 MS SQL Server。

EDIT3:我希望在每个计划的假设表中找到匹配项。如果不是,我会有更大的问题 - 虽然与这个问题无关。

最佳答案

对于 PLANS 表中的每个 ass# 列,您必须将 LEFT JOIN 加入到 ASSUMPTIONS 表中:

   SELECT p.plankey,
a1.assname,
a2.assname,
a3.assname,
a4.assname
FROM PLANS p
LEFT JOIN ASSUMPTIONS a1 ON a1.refkey = p.ass1
AND a1.asstype = 'ass1'
LEFT JOIN ASSUMPTIONS a2 ON a2.refkey = p.ass2
AND a2.asstype = 'ass2'
LEFT JOIN ASSUMPTIONS a3 ON a3.refkey = p.ass3
AND a3.asstype = 'ass3'
LEFT JOIN ASSUMPTIONS a4 ON a4.refkey = p.ass4
AND a4.asstype = 'ass4'

在不了解数据库的情况下,我无法提供动态 SQL 的语法来为需要执行的不同数量的连接构建查询。

关于sql - 不确定如何加入这两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3338179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com