[解決済み] MySQLで配列を保存するには?
2022-03-03 13:57:50
質問
MySQLに2つのテーブルがあります。テーブルPersonには、以下のカラムがあります。
<テーブル
イド
名前
果物
は
fruits
カラムには、null や ('apple', 'orange', 'banana'), ('strawberry') などの文字列の配列を格納することができます。2 番目のテーブルはテーブル Fruit で、以下の 3 つのカラムを持つ。
<テーブル
フルーツ名
色
価格
リンゴ
赤
2
オレンジ
オレンジ
3
-----------
--------
------
では、どのようにデザインすればいいのでしょうか。
fruits
カラムの値を取る文字列の配列を保持できるようにします。
fruit_name
カラムを使用できますか?MySQL には配列データ型がないので、どのようにすればよいのでしょうか?
どのように解決するのですか?
正しい方法は、複数のテーブルを使用し
JOIN
をクエリで使用します。
例えば
CREATE TABLE person (
`id` INT NOT NULL PRIMARY KEY,
`name` VARCHAR(50)
);
CREATE TABLE fruits (
`fruit_name` VARCHAR(20) NOT NULL PRIMARY KEY,
`color` VARCHAR(20),
`price` INT
);
CREATE TABLE person_fruit (
`person_id` INT NOT NULL,
`fruit_name` VARCHAR(20) NOT NULL,
PRIMARY KEY(`person_id`, `fruit_name`)
);
は
person_fruit
テーブルには、各人が関連する果物ごとに一行が含まれ、効果的に
person
と
fruits
テーブルを一緒にすることで、I.E.
1 | "banana"
1 | "apple"
1 | "orange"
2 | "straberry"
2 | "banana"
2 | "apple"
ある人物とその果物のすべてを取得したい場合は、次のようにします。
SELECT p.*, f.*
FROM person p
INNER JOIN person_fruit pf
ON pf.person_id = p.id
INNER JOIN fruits f
ON f.fruit_name = pf.fruit_name
関連
-
[解決済み】SQL ZOO 各大陸とアルファベット順で1位の国名をリストアップする
-
[解決済み] MySQL でネストされたトランザクションは可能ですか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] CSVファイルをMySQLのテーブルにインポートするには?
-
[解決済み】外部キーを持つテーブルのカラムはNULLにできる?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】カラムのデータが切り捨てられた?
-
[解決済み】MySQLエラー#1071 - 指定されたキーが長すぎる; キーの最大長は767バイトです。
-
[解決済み】MySQLのforeachループ
-
[解決済み] MySQLの グループ関数の無効な使用
-
[解決済み] MySQL エラー 1093 - FROM 句で更新のターゲット テーブルを指定できません。
-
[解決済み] MySQLです。テーブルを作成できません (errno: 150)
-
[解決済み] 「他のデータベースへのクエリを無視する」コマンドライン
-
[解決済み] エラーコードです。1215. 外部キー制約を追加できません (外部キー)
-
[解決済み] dpkg: error processing package mysql-server (dependency problems)?
-
[解決済み] 1行目の列 'id' に不正な整数値 '' があります。