MySQLでカンマ区切りのフィールド検索に非常に便利!(find_in_set)
こんにちは。ぽんです。
みなさんはこんな場合にどうやって対応するでしょうか?
スーパーにりんごとみかん、ぶどうが売っています。
それぞれ記号で置いて、以下とします。
りんご = 1
みかん = 2
ぶどう = 3
Aさんはりんごとみかんを購入し、Bさんはりんごとぶどうを購入しました。
テーブルに格納すると、
★購入情報テーブル
購入者 | 購入したもの |
---|---|
A | りんご,みかん |
B | りんご,ぶどう |
↓記号で置き換えてみる
購入者 | 購入したもの |
---|---|
A | 1,2 |
B | 1,3 |
りんごを買った人はだれか?というのを抽出するためによくやりがち(?あんまりいないか)なのが、
select 購入者 from 購入情報テーブル where 購入したもの like '%1%';
なんかこんな感じでやってた人がいた。
・
・・
・・・
・・・・
・・・・・
これじゃ取れないよ!笑
ぽんはいままでこういう設計は避けてきたので知らなかったんですけど MySQLにはfind_in_set()という便利な関数が存在する。
select 購入者 from 購入情報テーブル where find_in_set(1,購入したもの);
これで一発!
もしもっといい方法をご存知の方は教えて下さいーm( )m