J'essaie de trouver cette requête dans laquelle je veux montrer quels hôtes utilisent quel modèle dans ma table Zabbix. Le seul problème est que les hôtes et les modèles sont enregistrés dans la même table. Ils sont mélangés dans le tableau, par exemple l'ID 11813 est l'hôte et 11815 est le modèle. Maintenant, j'ai trouvé un tableau qui définit la relation entre ces deux : hosts_templates.
Le tableau comporte 3 colonnes : identifiant host_template, hostid, templateid
La table des hôtes comporte de nombreuses colonnes, mais contient également : hostid, name, où hostid contient l'hôte et le modèle. La table hôte possède une colonne templateid, mais elle n'est pas utilisée.
Dans le tableau hosts_templates, je peux voir quels hôtes utilisent quel modèle. Le seul problème est que je vois l'ID et que je souhaite voir les noms qui correspondent à cet ID. Ce que j'ai jusqu'à présent :
Sortie de la table hosts_templates
Sortie du nom, ID d'hôte des hôtes de la table
Ce que j'ai essayé jusqu'à présent :
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;
Le résultat de ces requêtes montre la moitié de ma solution, mais avec des duplications.
Le problème est que je ne peux pas sélectionner un nom différent pour la deuxième colonne, donc elle répète simplement la première colonne, ce qui n'est pas ce que je veux... et comme j'ai déjà rejoint l'ID d'hôte en interne, je peux' Je ne le ferai pas une deuxième fois. J'ai donc besoin d'une combinaison des 2 requêtes SQL ci-dessus. J'ai l'impression d'être proche, mais je n'y arrive tout simplement pas.
Toute aide serait grandement appréciée !
C'est une question fondamentale. Vous devez en savoir plus sur la syntaxe SQL telle que les jointures de chaîne, accédant au même nom de colonne à partir de différentes tables.
Exemple de code :
Vous devez vous inscrire deux fois. Donnez aux tables différents alias afin de pouvoir les distinguer.