So zeigen Sie mithilfe einer MySQL-Abfrage mehrere Tabellen aus einer ID-Spalte an
P粉207483087
P粉207483087 2024-03-26 10:18:45
0
2
374

Ich versuche diese Abfrage zu finden, in der ich anzeigen möchte, welche Hosts welche Vorlage in meiner Zabbix-Tabelle verwenden. Das einzige Problem besteht darin, dass die Hosts und Vorlagen in derselben Tabelle registriert sind. Sie sind in der Tabelle gemischt, zum Beispiel ist ID 11813 der Host und 11815 die Vorlage. Jetzt habe ich eine Tabelle gefunden, die die Beziehung zwischen diesen beiden definiert: hosts_templates.

Die Tabelle hat 3 Spalten: host_template id, hostid, templateid

Die Hosts-Tabelle hat viele Spalten, enthält aber auch: Host-ID, Name, wobei Host-ID Host und Vorlage enthält. Der Tabellenhost verfügt zwar über eine templateid-Spalte, diese wird jedoch nicht verwendet.

In der Tabelle hosts_templates kann ich sehen, welche Hosts welche Vorlage verwenden. Das einzige Problem besteht darin, dass ich die ID sehe und die Namen sehen möchte, die dieser ID entsprechen. Was ich bisher habe:

Ausgabe der Tabelle hosts_templates

Ausgabe aus Name, Host-ID aus Tabelle Hosts

Was ich bisher versucht habe:

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;

Die Ausgabe dieser Abfragen zeigt die Hälfte meiner Lösung, jedoch mit Duplikaten.

Das Problem ist, dass ich für die zweite Spalte keinen anderen Namen auswählen kann, sodass nur die erste Spalte wiederholt wird, was nicht das ist, was ich möchte ... und da ich der Host-ID bereits intern beigetreten bin, kann ich Ich mache es nicht ein zweites Mal. Ich benötige also eine Kombination der oben genannten 2 SQL-Abfragen. Ich habe das Gefühl, nah dran zu sein, aber ich schaffe es einfach nicht.

Jede Hilfe wäre sehr dankbar!

P粉207483087
P粉207483087

Antworte allen(2)
P粉670838735

这是一个基本问题。您应该了解有关 SQL 语法的更多信息,例如链式联接、从不同表访问相同的列名。

示例代码:

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

您必须加入两次。为表指定不同的别名,以便您可以区分它们。

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage