Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memilih Kereta yang Lulus Semua Ujian daripada Jadual Pangkalan Data?

Bagaimana untuk Memilih Kereta yang Lulus Semua Ujian daripada Jadual Pangkalan Data?

DDD
Lepaskan: 2025-01-14 10:19:49
asal
619 orang telah melayarinya

How to Select Cars That Passed All Tests from a Database Table?

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>
Salin selepas log masuk

Pertanyaan ini cekap memilih carnames 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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan