MySQL(データの中に配列があったら)

MySQL

時にデータベースに挿入したいデータの中に要素数の確定しない配列のようなデータが存在する場合がある。こういったときはテーブルを複数に分けるとよい。今回はユーザーが複数の文字列を保持できるデータを想定する。

データベース作成

CREATE DATABASE arr_db
DEFAULT CHARACTER SET utf8;

テーブル作成

arr_dbに移動して以下を行う

CREATE TABLE users (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20)
);

CREATE TABLE user_items(
user_id INT,
item_name VARCHAR(50),
PRIMARY KEY(user_id, item_name)
);

データ挿入

INSERT INTO users (name)
VALUES("A"),("B"),("C");
INSERT INTO user_items
VALUES
(1,"itemA1"),(1,"itemA2"),(1,"itemA3"),
(2,"itemB1"),(2,"itemB2"),
(3,"itemC1"),(3,"itemC2"),(3,"itemC3"),(3,"itemC4");

データ閲覧

1ユーザー1レコードで表示したい場合、GROUP_CONCATを使うと便利

SELECT u.name,GROUP_CONCAT(ui.item_name) AS items 
FROM users AS u 
JOIN user_items AS ui 
ON u.id=ui.user_id 
GROUP BY u.id;

コメント

タイトルとURLをコピーしました