GOOGLE ADS

viernes, 29 de abril de 2022

consulta mysql muestra varias tablas de una columna de ID

Estoy tratando de encontrar esta consulta donde quiero mostrar qué hosts usan qué plantilla de mi tabla Zabbix. El único problema es que los hosts y las plantillas están registrados en la misma tabla. Se mezclan en la tabla, por ejemplo, el ID 11813 es un host y el 11815 es una plantilla. Ahora encontré una tabla donde se define la relación entre estos 2: hosts_templates.

Esta tabla tiene 3 columnas: host_template id, hostid, templateid

La tabla hosts tiene muchas columnas, pero también contiene: hostid, nombre donde hostid contiene los hosts y las plantillas. los hosts de la tabla tienen una columna templateid pero NO SE UTILIZA.

En la tabla hosts_templates puedo ver qué hosts usan qué plantilla. El único problema es que veo las ID y quiero ver el nombre que coincide con esa ID. Lo que tengo hasta ahora:

salida de la tabla hosts_templates
salida de la tabla hosts_templates

salida del nombre, hostid de los hosts de la tabla
salida del nombre, hostid de los hosts de la tabla

lo que he intentado hasta ahora:

select name, name
from hosts_templates
inner join hosts on hosts_templates.hostid = hosts.hostid;
select name, name
from hosts_templates
inner join hosts on hosts_templates.templateid = hosts.hostid;

El resultado de estas consultas muestra la mitad de mi solución, pero duplicada.

el problema es que no puedo elegir un nombre diferente para la segunda columna, por lo que solo duplica la primera columna, que no es lo que quiero... Y como ya me he unido internamente al hostid, no puedo hacerlo por segunda vez. Así que necesito una combinación de las 2 consultas sql anteriores. Tengo la sensación de que estoy tan cerca, pero no puedo conseguirlo.

¡Cualquier ayuda sería muy apreciada!


Solución del problema

Tienes que unirte dos veces. Dale a la tabla diferentes alias para que puedas distinguirlos.

SELECT h1.name as host_name, h2.name AS template_name
FROM hosts_template AS t
JOIN hosts AS h1 ON t.hostid = h1.hostid
JOIN hosts AS h2 ON t.hosttemplateid = h2.hostid

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...