Bagaimana untuk memaparkan berbilang jadual dari satu lajur ID menggunakan pertanyaan MySQL
P粉207483087
P粉207483087 2024-03-26 10:18:45
0
2
354

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粉207483087
P粉207483087

membalas semua(2)
P粉670838735

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;
P粉729436537

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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!