- ベストアンサー
MySQLのSET型の結合について
- MySQLのSET型を使用して、各値とJOINする方法はありますか?
- SET型の各値とJOINする方法を探しています。現在は、一度配列化してfor文でSELECTをかけ、再度連結する方法しか思いつきません。
- MySQLのSET型の値と結合する方法を教えてください。現在は、回りくどい方法しか思いつきません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そもそもSETをつかうならSETの選択肢にリンゴ、オレンジ・・・と 最初からキーワードをいれておけば済みます。 SETで別テーブルを参照する正規化は効率的ではないとおもいます。 逆にクライアント側からの入力を制限したいという目的であれば 外部キー制約の方がよいかと。 //まず果物テーブルを作り create table `kudamono`(`id` int,`kudamono` varchar(20),index(`id`)) engine=InnoDB; insert into `kudamono` values(1,'りんご'),(2,'オレンジ'),(3,'いちご'),(4,'メロン'),(11,'おまけ'); //外部キー制約付きで商品テーブルを作ります create table `shohin`(`group` varchar(20), `item` int ,foreign key(`item`) references `kudamono`(`id`),unique(`group`,`item`)) engine=InnoDB; //データはitemを個別に持たせます insert into `shohin` values('果物群A',1),('果物群A',3),('果物群B',2),('果物群B',4),('果物群C',2),('果物群C',11); //groupとitemの組み合わせを表示するにはこう select `group`,group_concat(cast(`item` as char)) as `items` from `shohin` group by `group`; //果物名を表示させるにはこう select `group`,group_concat(`kudamono`) as `kudamonos` from `shohin` as s inner join `kudamono` as k on k.id=s.item group by `group`;
お礼
ご丁寧かつ詳しいご回答ありがとうございます。 ちょっと構造自体を見直した方が良さそうですね。 参考にさせていただきます!