#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