Menggabungkan Dua Jadual untuk Output Tunggal
Operasi pangkalan data selalunya memerlukan penggabungan data daripada berbilang sumber kepada output yang padu. Cabaran biasa ialah menggabungkan jadual dengan struktur yang serupa tetapi kategori yang berbeza. Pertimbangkan masalah berikut:
Anda mempunyai dua jadual, "KnownHours" dan "UnknownHours," dengan lajur termasuk ChargeNum (pengecam unik), CategoryID (tugasan kategori), Bulan (tarikh) dan Jam ( nilai sebenar). Tugasnya adalah untuk menggabungkan jadual ini, mengabaikan lajur Bulan, ke dalam jadual data tunggal, mengumpulkan Jam mengikut ChargeNum dan CategoryID.
Output yang dijangkakan ialah:
ChargeNum CategoryID Hours 111111 1 90 111111 2 50 111111 Unknown 110.5 222222 1 40 222222 Unknown 25.5
Untuk mencapai ini , kita boleh menggunakan operator UNION, yang menggabungkan hasil dua pertanyaan. Untuk masalah ini, kami akan membina dua pertanyaan:
Pertanyaan 1:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
Pertanyaan ini mendapatkan semula ChargeNum, CategoryID dan jumlah Jam untuk setiap gabungan daripada jadual "KnownHours".
Pertanyaan 2:
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
Pertanyaan ini mendapatkan semula ChargeNum dan jumlah Jam untuk setiap entri dalam jadual "UnknownHours", memperuntukkan 'Unknown' sebagai CategoryID.
Menggabungkan kedua-duanya pertanyaan menggunakan UNION ALL menghasilkan output yang diingini:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID UNION ALL SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
The UNION SEMUA operator menggabungkan hasil tanpa mengalih keluar pendua, memberikan paparan lengkap data gabungan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Dua Jadual dengan Struktur Serupa tetapi Kategori Berbeza ke dalam Jadual Output Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!