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
Lepaskan: 2025-01-14 10:40:43
asal
1047 orang telah melayarinya

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:

SELECT carname
FROM PassedTest
GROUP BY carname
HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname);
Salin selepas log masuk

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:

SELECT *
FROM cars
WHERE carname IN (
    SELECT carname
    FROM PassedTest
    GROUP BY carname
    HAVING COUNT(DISTINCT testtype) = (SELECT COUNT(*) FROM PassedTest GROUP BY carname)
);
Salin selepas log masuk

Alternatif:

Pilihan lain ialah menggunakan operasi JOIN:

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

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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan