MySQL JOIN получает значение столбца на основе другого столбца в той же таблице

Таблица Тагенте


|id_agente | nombre | id_grupo |
|------------------------------|
| 3        |  mark  |    4     |

Таблица tagent_secondary_group

|id     | id_agente | id_group |
|------------------------------|
|  2    |    3      |    8     |

Таблица tgrupo

|id_grupo |   nombre   | parent|
|------------------------------|
|  8      | servers    |  10   |
|  10     | datacenter |  0    |

Столбец «родительский» в таблице «tgrupo» ссылается на «id_grupo» той же таблицы, Таким образом, родителем серверов является центр обработки данных.

И мне нужно получить значение "номбре" на основе родительского значения.

Как я могу это сделать? Это можно сделать по тому же запросу?

SELECT  ta.nombre as agente ,tg.nombre as grupo , tg.parent 
FROM tagente ta
JOIN tagent_secondary_group tsg ON ta.id_agente  = tsg.id_agent 
JOIN tgrupo tg ON tsg.id_group = tg.id_grupo
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Да, вы просто включаете таблицу дважды с двумя разными псевдонимами. Пишу здесь с WHERE, но можно переделать с JOINs.

SELECT  ta.nombre as agente , tg2.nombre as grupo , tg1.parent 
FROM tagente ta, tagent_secondary_group tsg, tgrupo tg1, tgrupo tg2
WHERE ta.id_agente = tsg.id_agent
  AND tsg.id_group = tg1.id_grupo
  AND tg1.parent = tg2.id_grupo;

Соединения, разделенные запятыми, устарели более 10 лет назад.

nbk 29.03.2022 21:23

Уже 30 лет... (SQL-92)

jarlh 29.03.2022 21:49

Запятая означает перекрестное соединение с более высоким приоритетом, чем JOIN с ключевым словом, и аргументы против этого являются благовидными.

philipxy 30.03.2022 10:04

Другие вопросы по теме