[解決済み] MySQLで配列を保存するには?
2022-04-22 09:11:17
質問
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集計、グループ化、ソート
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
[解決済み] 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におけるorder byの使用方法の詳細
-
SQL集計、グループ化、ソート
-
MySQLデータ型の詳細
-
MySQL サービスとデータベース管理
-
Mysqlのソート機能の詳細
-
[解決済み】MySQLで「すべての派生テーブルは独自のエイリアスを持つ必要があります」というエラーは何ですか?
-
Unknown character set.を解決する。MySQLデータベースインポート時の'utf8mb4'エラーの解消
-
[解決済み] MySQLのプロセスリストを見つけ、それらのプロセスを終了させる方法は?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型