【问题标题】:Join tables to retrieve data in DB2连接表以检索 DB2 中的数据
【发布时间】:2023-04-09 16:10:01
【问题描述】:

这些是我的餐桌详情:

表1

id       name
----------------
101      syed
102      shaik

表2

l_id     sup_id
-----------------
101     102


id  name    sup_id  sup_name
------------------------------
101 syed    102     shaik

在表 1 中,我有两行,101 和 102,这是一个主表。表 2 由主管登录 ID 及其从属 ID 组成。 table1 和 table2 之间的公共列是 id & l_id。所以,我正在尝试按如下方式提取数据以获取详细信息。

我的查询如下

SELECT 
    r.id, 
    trim(r.name) as name, trim(a.sup_id) as sup_id,
    trim(select name from schema.table1 
         where id in (a.sup_id)) as sup_name 
FROM 
    schema.table1 r
JOIN
    schema.table2 a ON a.l_id = r.id 
WHERE 
    r.id IN (101)

我可以得到主管 ID,但不能得到主管姓名。

任何想法将不胜感激

person id - person name - supervisor id - supervisor name

【问题讨论】:

  • 请出示您当前的脚本并解释一下,为什么您不能通过不同的idtable2 加入table1table2 2 次?
  • @astentx,用脚本更新
  • 你可以加入任何(当然,它是有限的,但你很难达到那个数量)数量的表,并在join 中使用一个表任意次数,但应该使用别名每次出现 (JOIN tabname as tabalias)。不需要在select中做子查询,经常执行不好。

标签: sql database db2


【解决方案1】:

你可以试试下面的-

select t1.id,t1.name, sup_id,t2.name as sup_name
from table2 t 
     join table1 t1 on t1.id=t.l_id
     join table1 t2 on t2.id=t.sup_id

【讨论】:

  • 连接到 sup_id 的别名是什么?
  • 这是 t2.id,它是 table1 @Syed 的引用 - 您需要将 table2 与 table1 的多个实例加入
  • join table1 t2 on t2.id=t.sup_id --> 在这个语句中,t2表中没有id列。只有 l_id 和 sup_id 列
  • @Syed,t2 是 table1 的别名,table1 有一个 id 列,用于与 sup_id 连接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-26
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
相关资源
最近更新 更多