Таблица Тагенте
|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
Да, вы просто включаете таблицу дважды с двумя разными псевдонимами. Пишу здесь с WHERE
, но можно переделать с JOIN
s.
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;
Уже 30 лет... (SQL-92)
Запятая означает перекрестное соединение с более высоким приоритетом, чем JOIN с ключевым словом, и аргументы против этого являются благовидными.
Соединения, разделенные запятыми, устарели более 10 лет назад.