Pertanyaan Pangkalan Data: Mengenalpasti Kereta yang Melepasi Semua Ujian
Panduan ini menunjukkan cara memilih kereta dengan cekap daripada pangkalan data yang telah berjaya menyelesaikan set ujian yang telah ditetapkan. Kami akan menumpukan pada senario di mana kami perlu mengenal pasti kereta dalam jadual passedtest
yang telah lulus semua ujian (A, B, C dan D).
Batasan IN
Kenyataan
Walaupun pernyataan IN
berguna untuk menyemak sama ada nilai wujud dalam senarai, ia tidak sesuai untuk tugas khusus ini. Menggunakan IN
akan salah mengenal pasti kereta yang lulus walaupun hanya satu daripada ujian yang diperlukan. Pendekatan yang lebih mantap diperlukan.
Memanfaatkan Pengagregatan dan Pengelompokan
Penyelesaian terletak pada penggunaan fungsi agregat dan pengelompokan. Kami menggunakan fungsi COUNT()
untuk menentukan bilangan jenis ujian berbeza yang diluluskan oleh setiap kereta. Klausa GROUP BY
kemudian menyusun keputusan mengikut nama kereta, membolehkan kami mengira ujian yang berbeza bagi setiap kereta.
Menapis Hasil dengan HAVING
Klausa HAVING
adalah penting untuk menapis hasil terkumpul. Ia membolehkan kami mengasingkan kereta yang mempunyai kiraan jenis ujian yang berbeza bersamaan dengan jumlah ujian yang diperlukan (empat, dalam keadaan ini).
Penyelesaian SQL
Pertanyaan SQL berikut mencapai hasil yang diingini:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4;</code>
Pertanyaan ini cekap memilih carname
s daripada jadual passedtest
yang telah melepasi keempat-empat ujian yang ditentukan.
Meluaskan Pertanyaan untuk Data Komprehensif
Untuk mendapatkan butiran tambahan tentang kereta yang lulus semua ujian, pertanyaan bersarang boleh digunakan:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 );</code>
Pertanyaan dipertingkat ini mendapatkan semula semua lajur daripada jadual cars
untuk kereta tersebut yang dikenal pasti telah lulus semua ujian dalam jadual passedtest
.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Kereta yang Lulus Semua Ujian daripada Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!