Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Tawaran yang Mengandungi Semua Sukan Tertentu Menggunakan SQL?

Bagaimana untuk Memilih Tawaran yang Mengandungi Semua Sukan Tertentu Menggunakan SQL?

DDD
DDDasal
2024-12-18 04:46:10289semak imbas

How to Select Offers Containing All Specified Sports Using SQL?

SQL di mana set bercantum mesti mengandungi semua nilai tetapi mungkin mengandungi lebih banyak

Dalam sistem pengurusan pangkalan data hubungan (RDBMS), selalunya perlu untuk mendapatkan semula data berdasarkan syarat tertentu . Dalam senario khusus ini, tugasnya adalah untuk memilih baris daripada jadual tawaran yang merangkumi semua sukan yang dinyatakan dalam tatasusunan tertentu, sambil berpotensi mengandungi sukan tambahan.

Untuk mencapai hasil ini, pertanyaan SQL berikut boleh digunakan:

SELECT o.*
FROM   sports        s
JOIN   offers_sports os ON os.sport_id = s.id
JOIN   offers        o  ON os.offer_id = o.id
WHERE  s.name IN ('Bodyboarding', 'Surfing')
GROUP  BY o.id
HAVING count(*) = 2;

Memecahkan pertanyaan:

  • Pernyataan JOIN mewujudkan hubungan antara sukan, tawaran_sukan dan jadual tawaran.
  • Klausa WHERE menapis jadual sukan berdasarkan nama sukan yang ditentukan.
  • Penyata GROUP BY mengumpulkan keputusan mengikut lajur offer_id daripada tawaran jadual.
  • Klausa HAVING menyemak sama ada setiap kumpulan mengandungi betul-betul dua sukan unik nama.

Ringkasnya, pertanyaan SQL ini mendapatkan semula tawaran yang memenuhi kriteria yang ditetapkan, memastikan semua sukan yang diperlukan hadir tanpa mengecualikan tawaran yang termasuk sukan tambahan.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Tawaran yang Mengandungi Semua Sukan Tertentu Menggunakan SQL?. 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