Pada masa ini terdapat tiga jadual, 1: harga nama id jadual utama barangan
2: goods_type 商品类型表 tid name
3: goods_type_map 商品和商品类型关系表 id gid gtid
Struktur jadual sebelumnya adalah seperti di atas Sekarang kerana jenis produk yang sepadan boleh menjadi satu-ke-banyak, dan satu produk boleh sepadan dengan beberapa jenis, setiap kali saya mengemas kini jenis produk, saya perlu memadamkan. kandungan sedia ada jadual perhubungan dan masukkan perhubungan jenis yang baharu.
meja barang:
id name price goods_type
1 洗面奶 22 1,8
2 面膜 33 11
jadual_barangan
tid name
1 化妆品
8 护肤品
11 保健品
Jadi saya ingin menukarnya kepada: Tambahkan medan jenis_barang pada jadual produk utama untuk menggantikan jadual peta_barangan. Gunakan koma untuk memisahkan berbilang jenis.
Tetapi pada masa ini terdapat masalah Apabila menanyakan jenis produk tertentu, menggunakan pertanyaan Suka sering mengakibatkan ralat pertanyaan. Jadi saya ingin bertanya bagaimana untuk menangani situasi ini
Menggunakan suka bukanlah pilihan yang baik Saya mengesyorkan fungsi Mysql find_in_set yang sepatutnya dapat menyelesaikan keperluan poster asal. Dokumentasi rasmi: https://dev.mysql.com/doc/ref...
Anda juga boleh mempertimbangkan untuk menggunakan prosedur tersimpan untuk pelaksanaan rekursif, tetapi ini tidak disyorkan klasifikasi Infinite itu sendiri bukanlah reka bentuk pengalaman pengguna yang baik, apatah lagi ia akan meningkatkan tekanan pada pelayan dan pangkalan data.
Gunakan pertama seperti untuk mengetahui sebahagian daripada data, kemudian gelung in_array() untuk menapis, atau menukar struktur jadual
Ini jelas merupakan hubungan ramai-ke-banyak.
Jadi saya rasa lebih baik anda simpan tiga meja.
Ini lebih sesuai dengan paradigma.
Sepatutnya lebih munasabah untuk mematuhi paradigma Jika anda bertegas dengan idea asal, tambahkan pemisah sebelum dan selepas setiap ID kategori, dan tambahkan pemisah apabila dipadankan dengan suka
.Apabila anda menggunakan suka, sebagai contoh, jika anda mempunyai nilai seperti 1,2,11 suka 1 akan suka 1 dan 11
Dalam kes ini, sila gunakan find_in_set
Kalau berkeras nak guna like, nilai medan boleh jadi macam ni, 1,2,11 bila suka, suka ,1 pun boleh capai tujuan