mysql получить имя идентификатора и родительский идентификатор из другой таблицы? - PullRequest
0 голосов
/ 25 мая 2020

у меня 2 таблицы.

table1: [id, parent_id, name_id]

table2: [name_id, name]

я хотел бы показать для каждого идентификатора имя, связанное с name_id таблицы 2 и именем родителя (parent_id rapresent id той же таблицы 1)

Пример:

table1:
id     parent_id   name_id
1          0         100
2          1         101

table1:
name_id    name
 100       food
 101       fruit

output:
id     parent_id   name_id   name_id   parent_name_id
1          0         100      food           0
2          1         101      fruit        food

Сейчас я здесь, с имя name_id

SELECT table1.id, table1.parent_id , table1.name_id , table2.name_it
FROM table1 join table2 on table1.name_id = table2.name_id 
output:
id     parent_id   name_id   name_id   
1          0         100      food     
2          1         101      fruit   

Как я могу получить parent_name_id? спасибо

Ответы [ 3 ]

1 голос
/ 25 мая 2020

Можно выполнить несколько объединений:

select t1.*, t2.name, t20.name parent_name
from table1 t1
inner join table2 t2 on t2.name_id = t1.name_id
left  join table1 t10 on t10.id = t1.parent_id
left  join table2 t20 on t20.name_id = t10.name_id
0 голосов
/ 25 мая 2020

Вы можете использовать несколько объединений и давать им псевдонимы для работы. Что-то вроде этого (непроверено)

SELECT table1.id, table1.parent_id , table1.name_id , table2.name_it, t2_parent.name as parent_name
FROM table1 
join table2 on table1.name_id = table2.name_id 
join table1 t1_parent on t1_parent.id = table1.parent_id
join table2 t2_parent on t1_parent.name_id = table2.name_id 
0 голосов
/ 25 мая 2020

Используя псевдонимы, вы можете дважды ссылаться на одну и ту же таблицу, присоединяя каждое поле идентификатора.

SELECT a.id, 
    a.name_id, 
    b.name as name,
    a.parent_id, 
    c.name as parent,
FROM table1 as a
join table2 as b on a.name_id = b.name_id 
join table2 as c on a.parent_id = c.name_id 
...