Как получить запрос из двух разных таблиц как из одной таблицы

#sql

#sql

Вопрос:

У меня есть две таблицы

 Tab1        
id  Name    Level
1   a1  1
2   a2  1
3   b1  2
4   b2  2
5   c1  3
6   c2  3
7   b3  2
8   c3  3
9   c4  3


Tab2        
id  linkid  
1   3   
3   6   
1   7   
7   8   
3   9
  

Я пытаюсь получить разные уровни идентификатора, которые соответствуют уровню = 1
, что-то вроде

 Tab3        
Level1  Level2  Level3
1   3   6
1   7   8
1   3   9
  

Кто-нибудь может мне помочь?

Комментарии:

1. Я не понимаю логики в ваших результатах Tab3. Не могли бы вы немного развить?

Ответ №1:

Для представленных вами данных достаточно следующего утверждения …

Инструкция SQL

 SELECT  lvl1.id AS Level1
        , lvl2.id AS Level2
        , lvl3.id AS Level3
FROM    Tab2 lvl1
        INNER JOIN Tab2 lvl2 ON lvl2.id = lvl1.linkid
        INNER JOIN Tab2 lvl3 ON lvl3.id = lvl2.linkid
WHERE   lvl1.id = 1
  

… но я предполагаю, что вам каким-то образом нужно Tab1 включить в результаты, чтобы это могло быть ближе к тому, что вам действительно нужно

Инструкция SQL

 SELECT  lvl1.id AS Level1
        , lvl2.id AS Level2
        , lvl3.id AS Level3
FROM    Tab1 t1 
        INNER JOIN Tab2 lvl1 ON lvl1.id = t1.id
        INNER JOIN Tab2 lvl2 ON lvl2.id = lvl1.linkid
        INNER JOIN Tab2 lvl3 ON lvl3.id = lvl2.linkid
WHERE   t1.id = 1
  

обратите внимание, что я предполагаю Tab2.id , что внешний ключ Tab1.id