Rumah >pangkalan data >tutorial mysql >Bagaimana Saya Boleh Cari Kereta Yang Lulus Semua Ujian Tersenarai?

Bagaimana Saya Boleh Cari Kereta Yang Lulus Semua Ujian Tersenarai?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 10:40:431045semak imbas

How Can I Find Cars That Passed All Listed Tests?

Cari kereta yang lulus semua ujian daripada senarai ujian

Tugas ini memerlukan mengenal pasti kereta daripada jadual "kereta" yang telah berjaya melepasi semua ujian yang disenaraikan dalam jadual "paling lulus". Walaupun pernyataan IN yang mudah boleh mendapatkan semula kereta yang lulus mana-mana ujian tunggal, keperluannya adalah untuk memastikan setiap kereta lulus semua ujian dalam senarai.

Untuk mencapai matlamat ini, kita boleh menggunakan gabungan pengagregatan (KUMPULAN OLEH, MEMILIKI) dan teori set.

Penyelesaian:

<code class="language-sql">SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>

Penjelasan:

  • Subquery (SELECT COUNT(*) FROM PassedTest GROUP BY carname) mengembalikan jumlah bilangan ujian unik setiap kereta.
  • KEADAAN MEMPUNYAI KIRAAN(jenis ujian BERBEZA) = (PILIH KIRAAN(*) DARI KUMPULAN Ujian Lulus MENGIKUT nama kereta) menyemak sama ada kiraan jenis ujian berbeza kereta adalah sama dengan jumlah ujian, memastikan kereta itu telah melepasi semua ujian.

Untuk memasukkan data daripada jadual "kereta", anda boleh menggunakan pernyataan dalam:

<code class="language-sql">SELECT *
FROM cars
WHERE carname IN (
    SELECT carname
    FROM PassedTest
    GROUP BY carname
    HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname)
);</code>

Alternatif:

Pilihan lain ialah menggunakan operasi JOIN:

<code class="language-sql">SELECT DISTINCT c.carname
FROM cars c
JOIN PassedTest pt ON c.carname = pt.carname
GROUP BY c.carname
HAVING COUNT(*) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);</code>

Atas ialah kandungan terperinci Bagaimana Saya Boleh Cari Kereta Yang Lulus Semua Ujian Tersenarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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