2016-04-18 2 views
0

То, что я пытаюсь сделать, это получить значения, используя встроенный просмотр. на моем столе «mainBoard» есть столбцы, которые tgno1, tgno2, tgno3, которые являются внешними ключами, ссылаются на таблицу «Tag». Таблица «Тег» имеет только две колонки tgno (NUMBER), tgname (VARCHAR2).[ORACLE] Как получить значения внешнего ключа с помощью встроенного представления?

Я хочу вернуть значения из 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 bno,bsubject,mno,bdate,bhit,bvote,tgno1,tgno2,tgno3,num 
    FROM (SELECT bno,bsubject,mno,bdate,bhit,bvote,tgno1,tgno2,tgno3,rownum as num 
    FROM (SELECT bno,bsubject,mno,bdate,bhit,bvote,tgno1,tgno2,tgno3 
    FROM mainBoard WHERE btno=1 ORDER BY bno DESC)) 
    WHERE num BETWEEN #{start} AND #{end} 

Надеюсь, мой вопрос понятен. Заранее благодарю вас

+0

Почему бы не присоединиться к материнская плата, чтобы пометить 3 раза, один раз для каждого столбца? – xQbert

+0

спасибо, там был простой способ. –

ответ

0

Вы можете присоединиться к материнской плате, чтобы пометить трижды один раз для каждого внешнего ключа, чтобы пометить его в системной плате. Почему у вас должен быть встроенный просмотр или это ваш подход?

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 тег поле в MAINBOARD всегда заселены и предположил, что вы хотите, чтобы все материнские платы независимо от того, tagno заполняются во все 3.

+0

Это был мой подход. Спасибо огромное! эти три поля тега имеют значение по умолчанию «none», если значение не заполнено. –

Смежные вопросы