我对某些mysql有点问题。我会尽力给予我很多背景。这就是情况,我为我父母的植物苗圃创建了一个可用的存储器,并将工厂信息存储在mysql中,我第一次做了一件可怕的工作,现在我正在用我在此期间获得的新知识重做它。MySQL IFNULL INSERT巨大的挫折?
背景的问题,我有2台旧数据库中的一个被称为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...
领域将是被称为Availability
具有以下字段的第二个表的id
:
(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
具有以下字段:
( id
,plant_id
,size
,available
, upcoming
,price
,description
)
的plant_id
将在plant
表中的相应设备的ID。
现在解决问题。我需要从旧表中获取数据并将其放入新表中。我在新的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语句,我相信我有以下情况:
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。以科学名称创建植物,其余为空。好,我是新来的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
表中。
你的新工厂表中的id是否与旧库表中的id匹配?我有点失落,为什么你认为你必须根据科学名称进行搜索,以及由于您声明您复制了所有不同的植物,因此可能永远无法使用。那么突然间怎么会有未知的植物呢? – Eddy
我希望,它会返回null的原因并不是所有可用的植物都在画廊中。所以我试图做的是在工厂画廊里创建那些缺失的植物。 – GerritVK