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);
Penjelasan:
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) );
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);
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!