[解決済み] MySQLで配列を保存するには?
2022-03-12 04:02:47
質問
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
関連
-
[解決済み] エラー 1115 (42000)。不明な文字セットです。'utf8mb4'
-
[解決済み] アプリでSSLを有効にしていない場合、Azureの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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】autoカラムは1つしか存在できない
-
[解決済み】カラムのデータが切り捨てられた?
-
MySQLとのPython統合でAttributeErrorが発生する: モジュール 'socket' には 'AF_UNIX' という属性がない
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] ONLY_FULL_GROUP_BYの無効化
-
[解決済み] Error Dropping Database (Can't rmdir '.test', errno: 17)
-
[解決済み] エラー:テーブル '<table-name>' に対するユーザー '<userid>'@'<ip-address>' への select コマンドが拒否されました。
-
[解決済み] WindowsでMySQLの画面コンソールをクリアする方法は?
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] Mysql: const テーブルを読み込んだ後、不可能な場所に気づいた。