Mysql [ORACLE]如何使用内联视图获取外键值?

Mysql [ORACLE]如何使用内联视图获取外键值?,mysql,database,oracle,mybatis,Mysql,Database,Oracle,Mybatis,我要做的是使用内联视图获取值。 在我的表“mainBoard”中有tgno1、tgno2、tgno3列,它们是外键,用于引用表“Tag”。 表“Tag”只有两列tgno(NUMBER)、tgname(VARCHAR2) 我想使用内联视图将值从tgno(NUMBER)返回到tgname(VARCHAR2) 以下是我仅为一个值所做的尝试: SELECT tag1 FROM (SELECT tgname as tag1 FROM (SELECT tgname FROM tag WHERE tgno=1

我要做的是使用内联视图获取值。 在我的表“mainBoard”中有tgno1、tgno2、tgno3列,它们是外键,用于引用表“Tag”。 表“Tag”只有两列tgno(NUMBER)、tgname(VARCHAR2)

我想使用内联视图将值从tgno(NUMBER)返回到tgname(VARCHAR2)

以下是我仅为一个值所做的尝试:

SELECT tag1
FROM (SELECT tgname as tag1
FROM (SELECT tgname FROM tag WHERE tgno=1));
我想得到这三个值,比如:

SELECT tag1, tag2, tag3
FROM (SELECT...)
最终目标是获得tgname值的值,而不是下面的tgno1,2,3:


希望我的问题可以理解。提前感谢您

对于主板上要标记的每个外键关系,您可以加入主板进行三次标记。为什么您必须有一个内联视图,或者这只是您的方法

SELECT MB.*, T1.tgName as Tag1Name, T2.tgName as Tag1Name, T3.tgName as Tag1Name
FROM mainboard MB
LEFT JOIN tag t1
 on T1.tgno = mb.tgno1
LEFT JOIN tag t2
 on T2.tgno2 = mb.tgno1
LEFT JOIN tag t3
 on T3.tgno3 = mb.tgno1
WHERE MB.num BETWEEN #{start} AND #{end}

我使用了左连接,因为我不知道主板上的所有3个标记字段是否都已填充,并且假设您想要所有主板,而不管是否在所有3个标记字段中填充了标记号。

为什么不将主板连接到标签中,每列标记3次?谢谢,这是一种简单的方法。.这只是我的方法。非常感谢你!当没有填充值时,这三个标记字段具有默认值“none”。
SELECT MB.*, T1.tgName as Tag1Name, T2.tgName as Tag1Name, T3.tgName as Tag1Name
FROM mainboard MB
LEFT JOIN tag t1
 on T1.tgno = mb.tgno1
LEFT JOIN tag t2
 on T2.tgno2 = mb.tgno1
LEFT JOIN tag t3
 on T3.tgno3 = mb.tgno1
WHERE MB.num BETWEEN #{start} AND #{end}