Mencari ID Berlaku dalam Nilai Lajur Tertentu pada Berbilang Baris
Dalam jadual bersekutu MySQL, mengenal pasti item yang terdapat dalam berbilang kategori tertentu menimbulkan cabaran . Pendekatan awal menggunakan operator DAN dan ATAU tidak berkesan, kerana ia tidak mengambil kira keperluan kehadiran item dalam semua kategori tertentu.
Untuk menangani isu ini, teknik sambung sendiri boleh digunakan:
<code class="sql">SELECT c1.item_id FROM item_category AS c1 INNER JOIN item_category AS c2 ON c1.item_id = c2.item_id WHERE c1.category_id = 201 AND c2.category_id = 202</code>
Kaedah ini menggabungkan dua baris dalam jadual untuk mencipta satu baris dalam set hasil, membenarkan penilaian berbilang syarat kategori.
Pendekatan alternatif melibatkan penggunaan GROUP BY:
<code class="sql">SELECT c.item_id, COUNT(*) AS cat_count FROM item_category AS c WHERE c.category_id IN (201,202) GROUP BY c.item_id HAVING cat_count = 2</code>
Pertanyaan ini mengumpulkan item mengikut ID dan mengira bilangan kategori miliknya. Klausa HAVING memastikan bahawa hanya item yang hadir dalam semua kategori tertentu dikembalikan.
Kedua-dua teknik menawarkan penyelesaian yang cekap untuk mencari item pada berbilang baris dengan nilai lajur tertentu, dengan prestasinya berbeza-beza berdasarkan bilangan kategori yang disoal.
Atas ialah kandungan terperinci Bagaimana untuk Cari Item yang Hadir dalam Pelbagai Kategori Khusus dalam Jadual Bersekutu MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!