Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyertai Jadual Dua Kali pada Lajur Berbeza untuk Mendapatkan Data Berkaitan?

Bagaimana untuk Menyertai Jadual Dua Kali pada Lajur Berbeza untuk Mendapatkan Data Berkaitan?

DDD
DDDasal
2024-10-24 14:16:02379semak imbas

How to Join a Table Twice on Different Columns to Retrieve Related Data?

Menyertai Jadual Yang Sama Dua Kali pada Lajur Berbeza

Pertimbangkan senario di mana anda mempunyai jadual pengguna dan jadual aduan. Jadual aduan mengandungi ID pengguna kedua-dua orang yang membuka aduan dan orang yang menutupnya. Matlamatnya adalah untuk menulis pertanyaan yang memaparkan nama pengguna untuk kedua-dua individu ini.

Pada mulanya, pertanyaan boleh mendapatkan semula nama pengguna untuk orang yang membuka aduan:

SELECT user.username, complaint.complaint_text
FROM complaint
LEFT JOIN user ON user.user_id=complaint.opened_by

Walau bagaimanapun, untuk mendapatkan semula nama pengguna untuk orang yang menutup aduan, anda perlu menyertai jadual pengguna sekali lagi menggunakan lajur yang berbeza. Ini dicapai menggunakan pertanyaan berikut:

SELECT 
     complaint.complaint_text, 
     A.username, 
     B.username
FROM 
     complaint 
     LEFT JOIN user A ON A.user_id=complaint.opened_by 
     LEFT JOIN user B ON B.user_id=complaint.closed_by

Dalam pertanyaan ini:

  • Jadual A digunakan untuk bergabung pada lajur yang dibuka.
  • Jadual B ialah digunakan untuk menyertai pada lajur tertutup.

Dengan menyertai jadual pengguna dua kali, anda boleh mendapatkan semula nama pengguna untuk kedua-dua orang yang membuka dan menutup aduan, membolehkan anda memaparkan maklumat menyeluruh tentang setiap aduan.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual Dua Kali pada Lajur Berbeza untuk Mendapatkan Data Berkaitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn