Rumah >pangkalan data >tutorial mysql >Bagaimanakah Kami Boleh Menggabungkan Jadual KnownHours dan UnknownHours untuk Laporan Waktu Bersepadu?
Menggabungkan Jadual untuk Output Bersatu
Pengenalan:
Apabila berurusan dengan berbilang jadual, ia menjadi perlu untuk menggabungkan mereka untuk menyediakan output yang komprehensif dan bermakna. Menggabungkan jadual melibatkan teknik seperti pencantuman, penyatuan dan pengagregatan.
Pernyataan Masalah:
Tugas di tangan adalah untuk menggabungkan dua jadual, KnownHours dan UnknownHours, menjadi satu output yang kumpulan jam mengikut ChargeNum dan CategoryID, mengabaikan Bulan.
Butiran Jadual:
Table | Column | Description |
---|---|---|
KnownHours | ChargeNum | Unique charge number |
KnownHours | CategoryID | Category associated with the charge |
KnownHours | Month | Month when the charge was incurred |
KnownHours | Hours | Known hours for the charge |
UnknownHours | ChargeNum | Unique charge number |
UnknownHours | Month | Month when the charge was incurred |
UnknownHours | Hours | Unknown hours for the charge |
Output yang Diingini:
Output yang dijangkakan ialah satu jadual dengan struktur berikut:
Table | Column | Description |
---|---|---|
Consolidated | ChargeNum | Unique charge number |
Consolidated | CategoryID | Category associated with the charge or 'Unknown' |
Consolidated | Hours | Total hours for the charge |
Penyelesaian:
Untuk mencapai output yang dikehendaki, kami akan menggunakan operasi UNION dalam SQL. UNION menggabungkan hasil berbilang pertanyaan ke dalam satu jadual. Dalam kes ini, kami akan menjalankan dua pertanyaan, satu untuk jadual KnownHours dan satu untuk jadual UnknownHours. Pertanyaan akan mengagregatkan waktu untuk setiap ChargeNum dan CategoryID (dan 'Tidak Diketahui' untuk UnknownHours).
Pertanyaan pertama untuk jadual KnownHours:
SELECT ChargeNum, CategoryID, SUM(Hours) FROM KnownHours GROUP BY ChargeNum, CategoryID
Pertanyaan kedua untuk jadual UnknownHours :
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours) FROM UnknownHours GROUP BY ChargeNum
Akhir sekali, kami akan menggabungkan hasil kedua-dua pertanyaan ini menggunakan UNION ALL:
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
Operasi UNION ALL ini akan menggabungkan hasil dua pertanyaan ke dalam satu jadual, memberikan output yang diingini.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Menggabungkan Jadual KnownHours dan UnknownHours untuk Laporan Waktu Bersepadu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!