正确的SQL数据表查询写入

正确的SQL数据表查询写入,sql,datatable,Sql,Datatable,我有一个表t1,它有三列id,c1,c2,c3和一些数字。我有一个不同的表t2,其中id中的值是c1、c2、c3的值 我无法编写一个查询,从中可以获得如下结果: id | c1的名称| c2的名称| c3的名称 有人能帮忙吗。一种方法是编写子查询来检索每个列的名称: select t1.id , (select name from t2 where t2.id = t1.c1) as C1Name , (select name from t2 where t2.id =

我有一个表t1,它有三列id,c1,c2,c3和一些数字。我有一个不同的表t2,其中id中的值是c1、c2、c3的值

我无法编写一个查询,从中可以获得如下结果:

id | c1的名称| c2的名称| c3的名称


有人能帮忙吗。

一种方法是编写子查询来检索每个列的名称:

select  t1.id
,       (select name from t2 where t2.id = t1.c1) as C1Name
,       (select name from t2 where t2.id = t1.c2) as C2Name
,       (select name from t2 where t2.id = t1.c3) as C3Name
from    t1
或者您可以使用Trip连接:

select  t1.id
,       t2_1.name as C1Name
,       t2_2.name as C2Name
,       t2_3.name as C3Name
from    t1
join    t2 as t2_1 on t1.c1 = t2_1.id
join    t2 as t2_2 on t1.c2 = t2_2.id
join    t2 as t2_3 on t1.c3 = t2_3.id

您需要在每个值上加入三次才能获得它们的名称

SELECT T1.id, FirstJoin.Name, SecondJoin.Name, ThirdJoin.Name FROM T1
JOIN T2 FirstJoin On T1.c1 = FirstJoin.Id
JOIN T2 SecondJoinOn T1.c2 = SecondJoin.Id
JOIN T2 ThirdJoinOn T1.c3 = ThirdJoin.Id
我为这个蹩脚的别名道歉

SELECT
    t1.id,
    sub1.name,
    sub2.name,
    sub3.name
FROM
    t1
        JOIN t2 AS sub1 ON t1.c1 = sub1.id
        JOIN t2 AS sub2 ON t1.c2 = sub2.id
        JOIN t2 AS sub3 ON t1.c3 = sub3.id;

但是您应该修复您的数据模型,3列具有相同类型的数据,这听起来像是一个糟糕的数据模型。进行一些规范化。

您可能需要从表中发布一些示例数据作为示例。实际上,这三列是树的层,因此对于特定集合,它表示顶层、中层和底层。