Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memaparkan berbilang jadual dari satu lajur ID menggunakan pertanyaan MySQL

Saya cuba mencari pertanyaan ini di mana saya ingin menunjukkan hos yang menggunakan templat dalam jadual Zabbix saya. Satu-satunya masalah ialah hos dan templat didaftarkan dalam jadual yang sama. Mereka bercampur dalam jadual, contohnya ID 11813 ialah hos dan 11815 ialah templat. Sekarang saya menjumpai jadual yang mentakrifkan hubungan antara kedua-dua ini: hosts_templates.

Jadual mempunyai 3 lajur: id templat_hos, hos, id templat

Jadual hos mempunyai banyak lajur, tetapi juga mengandungi: hos, nama, tempat hos mengandungi hos dan templat. Hos jadual memang mempunyai lajur templateid, tetapi ia tidak digunakan.

Dalam jadual hosts_templates saya dapat melihat hos yang menggunakan templat mana. Satu-satunya masalah ialah saya melihat ID dan ingin melihat nama yang sepadan dengan ID tersebut. Apa yang saya ada setakat ini:

Output hos meja_templat

Output daripada nama, ID hos daripada hos jadual

Apa yang saya telah cuba setakat ini:

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;

Keluaran pertanyaan ini menunjukkan separuh daripada penyelesaian saya, tetapi dengan pendua.

Masalahnya ialah saya tidak boleh memilih nama lain untuk lajur kedua, jadi ia hanya mengulangi lajur pertama, yang bukan yang saya mahu... dan memandangkan saya sudah menyertai ID hos secara dalaman, saya boleh' t buat kali kedua. Jadi saya memerlukan gabungan 2 pertanyaan sql di atas. Saya rasa seperti saya dekat, tetapi saya tidak boleh mendapatkannya.

Sebarang bantuan akan sangat dihargai!

P粉207483087P粉207483087177 hari yang lalu310

membalas semua(2)saya akan balas

  • P粉670838735

    P粉6708387352024-03-27 09:23:21

    Ini soalan asas. Anda harus mengetahui lebih lanjut tentang sintaks SQL seperti gabungan rantai, mengakses nama lajur yang sama daripada jadual yang berbeza.

    Kod contoh:

    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;

    balas
    0
  • P粉729436537

    P粉7294365372024-03-27 00:41:12

    Anda mesti menyertai dua kali. Berikan jadual alias yang berbeza supaya anda boleh membezakannya.

    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

    balas
    0
  • Batalbalas