一部の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_ZoneDescp
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テーブルに再入力する必要があります。