Menyatukan Data daripada Berbilang Jadual dengan Satu Pertanyaan MySQL
Pada mulanya, menggunakan berbilang subkueri untuk mengagregat data daripada pelbagai jadual menghasilkan keputusan yang tidak tepat, dengan hanya lajur pertama menunjukkan nilai yang betul. Untuk menyelesaikan masalah ini, kaedah yang lebih cekap diperlukan.
Penyelesaian paling berkesan melibatkan pengagregatan bersyarat dalam satu pertanyaan jadual. Pendekatan ini mengelakkan pengehadan berbilang subkueri dan menghasilkan keputusan yang tepat. Pertanyaan berikut menunjukkan teknik ini:
<code class="language-sql">SELECT DAY_IN, COUNT(*) AS arr, SUM(IF(PAT_STATUS LIKE '%ong%', 1, 0)) AS ONG1, SUM(IF(PAT_STATUS LIKE '%rtde%', 1, 0)) AS RTED, SUM(IF(PAT_STATUS LIKE '%pol%', 1, 0)) AS POL1, SUM(IF(PAT_STATUS LIKE '%para%', 1, 0)) AS para FROM t_hospital WHERE DAY_IN BETWEEN @start_check AND @finish_check AND RES_DATE BETWEEN @start_res AND @finish_res AND ID_daily_hos = @daily_hos GROUP BY DAY_IN</code>
Pertanyaan ini menggunakan fungsi IF()
untuk mengira kejadian secara bersyarat berdasarkan lajur PAT_STATUS
. Setiap baris dikira sekali sahaja, menyumbang kepada satu lajur agregat. Fungsi SUM()
kemudian menjumlahkan kiraan bersyarat ini untuk setiap DAY_IN
.
Pendekatan pertanyaan tunggal ini menyediakan kaedah yang ringkas dan tepat untuk mengagregatkan data daripada lajur yang berbeza dalam jadual yang sama, dengan itu menyelesaikan isu keputusan tidak tepat yang diperoleh daripada kaedah berbilang subkueri asal.
Atas ialah kandungan terperinci Bagaimana untuk Mengumpul Berbilang Lajur dengan Cekap daripada Jadual Berbeza dalam Pernyataan MySQL Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!