Dalam pangkalan data hubungan, lajur biasanya memegang nilai tunggal untuk setiap baris. Walau bagaimanapun, dalam senario tertentu, anda mungkin perlu menyimpan berbilang nilai dalam satu lajur, dipisahkan oleh pembatas seperti koma. Ini boleh membawa kepada cabaran apabila menanyakan data, kerana pengendali konvensional seperti operator kesaksamaan tidak lagi berfungsi seperti yang diharapkan.
Sebagai contoh, pertimbangkan jadual berikut, yang menyimpan perhubungan ibu bapa-anak:
id name children 1 Roberto Michael,Dia 2 Maria John,Alex 3 Mary Alexandre,Diana
Jika kami cuba mencari ibu bapa yang mempunyai anak bernama "Alex" menggunakan pertanyaan:
WHERE children = 'Alex'
kami akan mendapatkan semula keputusan sifar, walaupun Alex adalah anak kepada Maria. Ini kerana kami sedang mencari padanan yang tepat, yang tidak hadir kerana nilai berbilang dalam lajur kanak-kanak.
Untuk mengendalikan situasi sedemikian, kita perlu meneroka pendekatan alternatif:
Normalkan Skema:
Penyelesaian yang ideal adalah untuk menormalkan skema dan mencipta jadual berasingan untuk kanak-kanak, dengan baris berasingan untuk setiap anak dan rujukan kepada ibu bapa. Ini akan membolehkan pertanyaan yang cekap berdasarkan nama kanak-kanak.
Menggunakan FIND_IN_SET:
Jika menormalkan skema tidak dapat dilaksanakan, anda boleh menggunakan fungsi FIND_IN_SET, yang menyemak sama ada nilai wujud dalam senarai yang dipisahkan koma. Pertanyaannya ialah:
WHERE FIND_IN_SET('Alex', children)
Ini akan mengembalikan ibu bapa yang mempunyai anak bernama Alex. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa FIND_IN_SET bukanlah pendekatan yang paling cekap dan harus digunakan hanya jika penormalan tidak berdaya maju.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Pertanyaan untuk Berbilang Nilai yang Disimpan dalam Lajur Pangkalan Data Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!