Comment afficher plusieurs tables à partir d'une colonne ID à l'aide d'une requête MySQL
P粉207483087
P粉207483087 2024-03-26 10:18:45
0
2
379

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 !

P粉207483087
P粉207483087

répondre à tous(2)
P粉670838735

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 :

select h1.name, h2.name
from hosts_templates ht
    inner join hosts h1 on ht.hostid = h1.hostid
    inner join hosts h2 on ht.templateid = h2.hostid;
P粉729436537

Vous devez vous inscrire deux fois. Donnez aux tables différents alias afin de pouvoir les distinguer.

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal