Как получить данные из двух столбцов одной таблицы без использования объединения? - PullRequest
0 голосов
/ 12 января 2019

У меня есть фрагмент кода, в котором я получаю данные из той же таблицы с помощью Union, но теперь я хочу обойтись без union

    select leftn as SId , TId
from test_tree
inner join (select @sid:=(select group_concat(leftn,',',rightn)
                          from test_tree
                          where find_in_set(sid, @nsid))
                 , @nsid:=@sid as fset
            from test_tree, (select @nsid:='AMSJUTATE',@sid='')v )gr
        on find_in_set(leftn,fset) where leftn <> ''
union
(select rightn as SId , TId
from test_tree
inner join (select @sid:=(select group_concat(leftn,',',rightn) 
                          from test_tree
                          where find_in_set(sid, @nsid))
                 , @nsid:=@sid as fset
            from test_tree, (select @nsid:='AMSJUTATE',@sid='')v )gr
        on find_in_set(rightn,fset) where rightn <> ''

Результат отображается как

    SId     TId
AMSNUDUCU   2
AMSGUWUDE   3
AMSXAWUXU   4
AMSZUCIVO   5
AMSFASOJA   6
AMSTEMUJI   7
AMSBIZEZO   8
AMSXUDINE   9
AMSZEVUTA   10
AMSREXEGI   11
AMSBIXIBO   12
AMSHEFOVI   13

и т. Д.

У меня есть такая таблица:

ВЫБРАТЬ * ИЗ test_tree

TId SId         LeftN      RightN     LStatus RStatus   
1     -         AMSJUTATE               1       
2   AMSJUTATE   AMSNUDUCU   AMSFEZAVU   1   1   
3   AMSNUDUCU   AMSGUWUDE   AMSTUTUNE   1   1   
4   AMSFEZAVU   AMSXAWUXU   AMSHALURA   1   1   
5   AMSGUWUDE   AMSZUCIVO   AMSKEFOFA   1   1   
6   AMSTUTUNE   AMSFASOJA   AMSZAPUPE   1   1   
7   AMSXAWUXU   AMSTEMUJI   AMSPOROBE   1   1   
8   AMSHALURA   AMSBIZEZO   AMSFOHOFI   1   1   
9   AMSZUCIVO   AMSXUDINE               1       
10  AMSKEFOFA   AMSZEVUTA               1       
11  AMSFASOJA   AMSREXEGI               1       
12  AMSZAPUPE   AMSBIXIBO               1       
13  AMSTEMUJI   AMSHEFOVI               1       
14  AMSPOROBE   AMSLUPAKE               1       
15  AMSBIZEZO   AMSCUSIPU               1       
16  AMSFOHOFI   AMSCEMUSU               1       
17  AMSXUDINE   AMSKATOTU               1       
18  AMSZEVUTA   AMSLECEVU               1       
19  AMSREXEGI              AMSKOVUSA        1   
20  AMSBIXIBO              AMSLIWULO        1   
21  AMSHEFOVI              AMSJOLOWE        1   
22  AMSLUPAKE              AMSREROXE        1   
23  AMSCUSIPU              AMSPOMUBE        1   
24  AMSCEMUSU              AMSPULINU        1   
25  AMSPULINU              AMSWOFIVO        1   

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

...