目前有三张表, 1: goods 商品主表 id name price
2: goods_type 商品类型表 tid name
3: goods_type_map 商品和商品类型关系表 id gid gtid
之前的表结构如上,现由于商品对应类型可以为一对多,一件商品可以对应多个类型,我每次更新商品所属类型时需要现将关系表已存在的内容删除再插入新的类型关系。
goods 表:
id name price goods_type
1 洗面奶 22 1,8
2 面膜 33 11
goods_type表
tid name
1 化妆品
8 护肤品
11 保健品
故想更改为: 在商品主表中增加 goods_type 字段,来取代goods_type_map表,多个类型使用逗号隔开.
但目前出现问题,当查询某个类型的商品时,使用Like查询会经常查询错误。 所以想问下这种情况应该怎么处理
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