時にデータベースに挿入したいデータの中に要素数の確定しない配列のようなデータが存在する場合がある。こういったときはテーブルを複数に分けるとよい。今回はユーザーが複数の文字列を保持できるデータを想定する。
データベース作成
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;
コメント