planのデータ型をintからvarcharに変換した
従来のMRDBであれば不可能です。正規化のルールやRDBの本質に反します。
但し、json_object型をplanにできればできる気がします。
基本はupdateですが、selectサブクエリーで in any そこに、jsonをぶっ込む
具体的なコードは暇ならMariaDBで試そうかな?
誰かトライしませんか?
そもそも、mangoDB,casaandoraを選択しては?
下記表1のid=100のAliceのplanへ表2のAliceに紐づくplan(1と2)を入れたいです。
表1
+-----+-------+-------+
| id | name | plan |
+-----+-------+-------+
| 100 | Alice | null |
| 101 | Mike | null |
| 102 | Bob | null |
+-----+-------+-------+
表2
+-----+-------+-------+
| plan | name | price |
+-----+-------+-------+
| 1 | Alice | 500 |
| 2 | Alice | 300 |
| 3 | Bob | 1000 |
+-----+-------+-------+
例)
解決方法を教えて下さい。
なし
例)
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
ソースコードを入力
例)
ここに問題・エラーに対して試したことを記載してください
JOINで結合してみたのですが、plan1しか代入されなかったです。
その後、表2のplanのデータ型をintからvarcharに変換したのですが、解決方法がみつかっておりません。
planのデータ型をintからvarcharに変換した
従来のMRDBであれば不可能です。正規化のルールやRDBの本質に反します。
但し、json_object型をplanにできればできる気がします。
基本はupdateですが、selectサブクエリーで in any そこに、jsonをぶっ込む
具体的なコードは暇ならMariaDBで試そうかな?
誰かトライしませんか?
そもそも、mangoDB,casaandoraを選択しては?
まず、データやその関連についてわからない部分が多いので回答が難しいところがあります。
その上での回答になりますが、ひとつのカラムにはひとつのデータしか入れることできません。
その代わりに、ひとつのデータに複数の意味を持たせるような形で、「100,200」のように区切り文字を使用したり、jsonデータという形で入れることはあります。
しかし、このようにひとつのデータに複数の意味を持たせることは、データ整合性において良い選択ではありません。このデメリット受け入れて手っ取り早くやりたい場合などに、そのような選択をすることがあります。
もし、このデータがユーザー(表1)と契約プラン(表2)のようなデータで、ユーザーは複数の契約をできるというルールがあった場合、中間テーブルを置いて多対多の構造になることが多いです。
いずれにしてもMySQLのこうした問題は、データベースの正規化についての知識が必要になります。