一部のmysqlで少し問題が発生しています。できる限り多くの背景を説明しようと思います。これが状況です。私は親の植物保育園の可用性を作成し、植物情報をmysqlに保存しました。初めてひどい仕事をしましたが、今はその間に得た新しい知識でやり直しています。
問題の背景として、古いデータベースに2つのテーブルがあり、1つGallery
は次のフィールドで呼び出されていました。
(id
、、、、、、、、、、、、、、、、、、、、、)。Plant_id_1
_ Plant_id_2
_ Plant_id_3
_ Plant_id_4
_ Plant_id_5
_ Image1
_ Image1_Copyright
_ Image2
_ Image2_Copyright
_ Scientific
_ Common
_ Category
_ Height
_ Spread
_ Exposure
_Zone
Descp
Plant_id_1...
フィールドは、次のフィールドid
で呼び出される2番目のテーブルのフィールドになります。Availability
(id
、、、、、、、、)name
_ size
_ description
_ available
_ upcomming
_price
ご覧のとおり、データについては何も知りませんでしたが(まだ知らない可能性があります)、テーブルの新しい構造について説明します。最初のテーブルはplants
次のフィールドで呼び出されます。
(id
、、、、、、、、、、、、、、、)scientific_name
_ common_name
_ category
_ height
_ spread
_ exposure
_ usda
_ description
_ image1_url
_ image1_copyright
_ image2_url
_image2_copyright
current
次のフィールドで呼び出される2番目:
(id
、、、、、、、、)plant_id
_ size
_ available
_ upcoming
_ price
_description
はplant_id
、テーブル内の対応するプラントのIDになりplant
ます。
次に問題に移ります。古いテーブルからデータを取得して、新しいテーブルに配置する必要があります。plant
私は新しいテーブルのギャラリーからのすべての植物をそこに問題なく持っています。しかし今Availability
、Current
テーブルに入る。
Availability
これは(私がトップ3を取りました)のエクスポートからの例です:
INSERT INTO `Availability` (`id`, `name`, `size`, `description`,`available`, `upcomming`, `price`) VALUES(91, 'Acer P.''Shishigashira''', ' #5', '30-36"', 27, 0, 36.00);
INSERT INTO `Availability` (`id`, `name`, `size`, `description`, `available`,`upcomming`, `price`) VALUES(697, 'Arbutus U. ''Compacta''', ' #5','', 0, 0, 16.20);
INSERT INTO `Availability` (`id`, `name`, `size`, `description`, `available`, `upcomming`, `price`) VALUES(90, 'Acer P.''Shigitatsusawa''', '#15', '', 0, 0, 65.00);
植物のテーブルからを取得しplant_id
、それを挿入ステートメントに入れる必要があります。これは、次のようになっていると思います。
INSERT INTO `current` (`plant_id`, `size`,`description`, `available`, `upcoming`, `price`) VALUES(
(SELECT `id`
FROM `plants`
WHERE `scientific_name`
REGEXP 'Acer P.+ ''Shishigashira'''), ' #5', '30-36"', 27, 0, 36.00);
しかし今、私はテーブルに一致する植物がない場合はどうなるかという新しい問題を抱えているplant
ので、そこにifnullが必要です。科学的な名前で植物を作成し、残りはnullにします。私はSQLを初めて使用するので、これが私が持っているものであり、機能していません。
INSERT INTO `current` (`plant_id`, `size`,`description`, `available`, `upcoming`, `price`) VALUES(
(IFNULL( SELECT IFNULL( (SELECT `id`
FROM `plants`
WHERE `scientific_name`
REGEXP 'Chamaecyparis O.+ Nana'),(
INSERT INTO `plants` (`scientific_name`)
VALUES (Chamaecyparis O. 'Nana'))))), ' #1', '', 0, 0, 9.25);
あなたが見ることができるようにあなたが私を助けるという挑戦に挑戦していると思うならそれは非常に複雑です私は大いに感謝します。誰も助けてくれない場合は、すべてのデータを手動でcurrent
テーブルに再入力する必要があります。