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

如何编写Access SQL查询,根据表A的字段值动态关联对应表并获取姓名信息

如何编写Access SQL查询,根据表A的字段值动态关联对应表并获取姓名信息

嗨,这个需求我熟!你想要的是根据表A里的tbl字段值,自动匹配到对应的B、C、D表,然后取出对应的姓名和姓氏数据,对吧?咱们直接上解决方案,先理清楚逻辑再写SQL。

首先明确你的表结构(我把你给的表转成更清晰的Markdown格式):

表结构说明

表A

ID_Atblsogg_ID
55122
55212
738

表B(tbl=1时关联)

ID_BNome_BCogn_B
22LucaRossi
15MarioVerdi
8AntonioBelli

表C(tbl=2时关联)

ID_CNome_CCogn_C
3SergioBianchi
12SimoneFerrari
10AriannaRicci

表D(tbl=3时关联)

ID_DNome_DCogn_D
21GiulioSala
7SofiaRusso
14LucaViola

核心逻辑是:表A的tbl字段值决定了要关联的目标表,sogg_ID对应目标表的ID字段(比如tbl=1时,sogg_ID对应表B的ID_B)。

实现的SQL查询

我们可以用UNION ALL来分别处理三种tbl的情况,然后合并结果,最后加上ID_A的过滤条件:

SELECT b.Nome_B AS Nome, b.Cogn_B AS Cogn
FROM A
INNER JOIN B ON A.sogg_ID = B.ID_B
WHERE A.tbl = 1 AND A.ID_A = 55

UNION ALL

SELECT c.Nome_C AS Nome, c.Cogn_C AS Cogn
FROM A
INNER JOIN C ON A.sogg_ID = C.ID_C
WHERE A.tbl = 2 AND A.ID_A = 55

UNION ALL

SELECT d.Nome_D AS Nome, d.Cogn_D AS Cogn
FROM A
INNER JOIN D ON A.sogg_ID = D.ID_D
WHERE A.tbl = 3 AND A.ID_A = 55

代码解释

  1. 第一个SELECT块:专门处理表A中tbl=1的记录,关联表B,取出对应的姓名和姓氏,并统一别名成Nome和Cogn,方便结果统一展示。
  2. 第二个SELECT块:处理tbl=2的记录,关联表C,同样统一字段别名。
  3. 第三个SELECT块:处理tbl=3的记录,关联表D。
  4. UNION ALL用来把三个查询的结果合并成一个数据集,这样就得到了对应ID_A的所有匹配记录。

如果需要更灵活的查询(比如动态输入ID_A),可以把55换成Access参数,比如[请输入要查询的ID_A:],这样运行查询时会弹出输入框让你指定ID值。

测试结果

当你执行上述SQL(WHERE A.ID_A=55)时,会得到如下结果:

NomeCogn
LucaRossi
SimoneFerrari

完全符合你想要的输出!

备注:内容来源于stack exchange,提问作者sp64

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:10:29