所以,我收到一个关于未定义函数的错误。每次我尝试使用计数器变量来引用表中的特定条目时,都会发生这种情况。我不明白。#1305 - 功能不存在 - 嵌套循环
为了更清楚起见,我被告知,为了在mysql中使用循环,我必须创建一个我已经完成的“过程”。 count和ingredientcount变量是对表tDrinks和tUniqueingredients中正在检查的行的引用。
我正尝试从表tDrinkMix中的tDrinks生成饮料ID的外键引用。我想在那里为饮料中的每种独特成分提供饮料ID。有16.5k饮料和2.2k独特的成分。
现在它死于SELECT id(count)FROM tDrinks。如果我删除了(count),那么它将在WHERE d_shopping(count)处死亡。
抛出的错误是#1305和它说,该函数DrinksDB.id没有定义
DROP PROCEDURE `test`//
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE ingredientcount INT DEFAULT 0;
WHILE count < 16532 DO
WHILE ingredientcount < 2202 DO
INSERT INTO tDrinkMix(count)
SELECT id(count) FROM tDrinks
WHERE d_shopping(count)
LIKE CONCAT('%',tUniqueingredients.ingredient(ingredientcount),'%');
SET ingredientcount = ingredientcount + 1;
END WHILE;
SET count = count + 1;
END WHILE;
END
所以我正在努力完善这一一点,我还是不能令人信服。你怎么知道这是我的第一个数据库项目?以下是越来越近了,我认为:该过程至少保存和看起来像它可能执行
delimiter //
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
DECLARE count INT DEFAULT 0;
DECLARE ingredientcount INT DEFAULT 0;
WHILE count < 16532 DO
WHILE ingredientcount < 2202 DO
INSERT INTO tDrinkMix(drink_id)
SELECT id
FROM tDrinks
WHERE id = count
and
d_shopping
LIKE
(SELECT CONCAT (ingredient,'%') FROM tUniqueingredients WHERE id = ingredientcount);
SET ingredientcount = ingredientcount + 1;
END WHILE;
SET count = count + 1;
END WHILE;
END//
你期望'id(count)'做什么? – Bohemian
你能提供样品数据和预期结果吗?特别是,希望这两个表达式有什么关系? –
我正在构建一个外键引用。我想喝一杯饮料,并重复尽可能多的成分。有16k饮料和2k食材。一些饮料有多达15种成分,并且会有他们的成分重复多次。我期待可能80k结果,当它结束 – user3435525