如何创建条件来自两个表的过程?

时间:2019-06-25 16:15:07

标签: mysql

我想创建一个看起来像这样的过程:

CREATE DEFINER=`root`@`localhost` PROCEDURE `transformare_in_imprumut`()
MODIFIES SQL DATA
BEGIN
    DECLARE stoc_actual INT(4);
    SELECT stoc INTO stoc_actual FROM carti WHERE 
        carti.idCarte=rezervari.idCarte;
    IF(stoc_actual >0) THEN
        UPDATE carti set stoc=stoc-1 WHERE carti.idCarte=rezervari.idCarte;
        INSERT INTO imprumuturi(idCarte) 
            SELECT idCarte FROM rezervari;
    ELSE
        UPDATE carti set stoc=stoc+1;
    END IF;
END;

问题是我想在满足WHERE条件时更新imprumuturi表。但是此过程不起作用,因为我正在比较两个不同表中的两个值。我的问题是:如何从两个表中获取两个值并在WHERE条件下进行比较。 任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

如果表之间有多行匹配,则不能将它们全部存储在一个变量中。

您可以使用光标在所有匹配的行中循环,但是更简单的方法是将JOIN放在UPDATE中。 LEFT JOIN将允许您根据行在另一个表中是否匹配来进行正确的更新。

UPDATE carti
LEFT JOIN rezervari ON carti.idCarte = reservari.idCart
SET carti.stoc = IF(reservari.idCart IS NULL, stoc+1, stoc-1);

INSERT INTO imprumuturi (idCart)
SELECT idCarte FROM rezervari;