Много столбцов в одной таблице ПРИСОЕДИНЯЙТЕСЬ к одной справочной таблице
изображение. Очень новый, поэтому, пожалуйста, будьте добры. Использование DBForge Query Builder
У меня есть одна таблица с несколькими столбцами, которые содержат сокращения. Другая таблица содержит описания для сокращений.
Нужно написать запрос, чтобы заменить все сокращения их описаниями. Попробовал несколько соединений без какого-либо успеха. Есть идеи?
T1
ID Date Type Cat Sub Cat
1 01/09/18 E F L
2 05/09/18 Cc F D
3 06/09/18 Cc C Dr
4 08/09/18 Cc C Sh
5 08/09/18 E C Sh
T2
Code Des
E Eft Payment
Cc Credit Card
F Food
C Clothes
B Breakfast
L Lunch
D Dinner
Sh Shirt
Dr Dress
Желаемый вывод
ID Date Type D Cat D Sub Cat D
1 01/09/18 Eft Payment Food Lunch
2 05/09/18 Credit Card Food Dinner
3 06/09/18 Credit Card Clothes Dress
4 08/09/18 Credit Card Clothes Shirt
5 08/09/18 Eft Payment Clothes Shirt
4 ответа
Решение
Попробуйте ниже, используя множественное соединение T2 с разными псевдонимами
select
a.ID, a.date,
b.Des as TypeD,
c.Des as CatD,
d.Des as SubCatD
from T1 a inner join T2 b on a.type=b.code
inner join T2 c on a.Cat=c.code
inner join T2 d in a.SubCat=d.code
Я буду считать, что столбцы T1 (ID, Date, Type, Cat, SubCat
)
SELECT T1.ID, T1.Date, T2Type.Des, T2Cat.Des, T2SubCat.Des
FROM T1 INNER JOIN T2 T2Type ON T1.Type = T2Type.Code
INNER JOIN T2 T2Cat ON T1.Cat = T2Cat.Code
INNER JOIN T2 T2SubCat ON T1.SubCat = T2SubCat.Code
Вам нужно использовать несколько экземпляров таблицы T2:
select t1.id, t1.date, typ.des as type_d,ca.des as cat_d,subca.des as sub_cat_d from T1 t1
inner join T2 typ on t1.type=typ.code
inner join T2 ca on t1.cat = ca.code
inner join T2 subca on t1.subcat = subca.code;
Попробуй это...
Как мы видим, в комментариях были полезные предложения, которые должны решить проблему. Также мы рекомендуем следующее решение:
SELECT t_type_code.id,
t_type_code.Date,
t_type_code.Des AS Type_D,
t_cat_code.Des AS Cat_D,
t_sub_code.Des AS Sub_Cat_D
FROM
(SELECT * FROM t1 JOIN t2 ON t1.Type=t2.Code) AS t_type_code
JOIN
(SELECT * FROM t1 JOIN t2 ON t1.cat=t2.Code) AS t_cat_code
ON t_type_code.id=t_cat_code.id
JOIN
(SELECT * FROM t1 JOIN t2 ON t1.Sub_Cat=t2.Code) AS t_sub_code
ON t_cat_code.id=t_sub_code.id