2017-03-09 15 views
-1

私のZabbixテーブルのどのテンプレートをどのホストが使用しているかを表示したいところです。唯一の問題は、ホストとテンプレートが同じテーブルに登録されていることです。それらは、例えばID11813がホストであり、11815がテンプレートであるテーブルの中に混在している。 ここで私はこれらの2つの関係が定義されているテーブルを見つけました:hosts_templates。 、 host_template IDを、ホストIDテーブルホストは多くの列も含む有しmysql query 1つのIDカラムから複数のテーブルを表示する

れるtemplateId:

この表は3つの列を有しているホストID、ホストIDがホストならびにテンプレートを含む名前を。テーブルホストにはtemplateid列がありますが、ITは使用されていません。

テーブルhosts_templatesではどのホストがどのテンプレートを使用しているかを見ることができます。唯一の問題は、私はIDを見て、私はそのIDと一致する名前を見たいです。 私がこれまで持っている:テーブルのホストからテーブルhosts_templatesから

出力
output from table hosts_templates

名からの出力、ホストIDを
output from name, hostid from table hosts

私がこれまで試してみました何:

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; 

これらのクエリの出力は私のソリューションの半分を示していますが、重複しています。

問題は2番目の列の別の名前を選ぶことができないので、最初の列は重複しています...私はすでに内部をホストしていますので、もう一度。だから、私は上記の2つのSQLクエリの組み合わせのようにする必要があります。私はとても近いと感じているが、私はそれを得ることができない。

ご協力いただければ幸いです!

+0

を働き、それを使用

SELECT id,hosts_templates.hostid,hosts_templates.templateid FROM hosts,host_templates WHERE hosts.id = hosts_templates.hostsid OR hosts.id=hosts_templates.templateid 

ONYすなわちhost_templatesつのテーブルからデータを選択するR等の問題ではなく、画像にプレーンテキストを入れてください、テスト時にコピー&ペーストすることができます。 – Barmar

+0

には、ここにサンプルデータと期待される結果が含まれています。 –

+0

私はあなたの質問に投票しませんでした。しかし、より簡潔に書くこと、不要な単語をカットして、望ましい出力を出さなければなりません。それは読者を助け、答えを得るチャンスを与えます。 – THN

答えて

0

あなたは2回参加する必要があります。あなたがそれらを区別できるように、テーブルに異なるエイリアスを与えます。

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 
+0

結合条件のホストのためのエイリアスは、 'h1'、' h2'でなければなりません。 – THN

0

これは基本的な質問です。連鎖した結合や、異なる表から同じ列名にアクセスするなど、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; 
0

あなたはそれが

関連する問題