Объединение таблиц для извлечения данных в DB2

#sql #database #db2

#sql #База данных #db2

Вопрос:

Это сведения о моей таблице:

Таблица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 состоит из идентификаторов входа супервизора с их подчиненными идентификаторами. Общим столбцом между таблицами 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)
  

Я могу получить идентификатор супервизора, но не имя супервизора.

Любые идеи будут высоко оценены

 person id - person name - supervisor id - supervisor name
  

Комментарии:

1. Пожалуйста, покажите ваш текущий скрипт и объясните, почему вы не можете присоединиться table1 и table2 2 раза отличается id от table2 ?

2. @astentx, обновлено с помощью скрипта

3. Вы можете объединить любое (конечно, оно ограничено, но вы вряд ли сможете достичь этого числа) количество таблиц и использовать одну таблицу любое количество раз join , но для каждого вхождения следует использовать псевдоним ( JOIN tabname as tabalias ) . Нет необходимости выполнять подзапрос в select, он часто работает плохо.

Ответ №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
  

Комментарии:

1. Какой псевдоним вам нужен для подключения к sup_id?

2. это t2.id который является ссылкой на table1 @Syed — вам нужно объединить ваш table2 с несколькими экземплярами table1

3. объединение таблицы1 t2 на t2.id=t.sup_id —> В этой инструкции в таблице t2 нет столбца id. Есть только столбцы l_id и sup_id

4. @Syed, t2 является псевдонимом table1, а table1 имеет столбец id, который используется для объединения с sup_id