MySQL Обновляет Записи Таблицы с проблемой цикла If и If - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть таблица с атрибутами teamId и roundId и другая таблица с именем teamRoundId для соединения двух атрибутов.Моя цель - заменить соединение teamId / roundId одним атрибутом с именем teamRoundId

enter image description here

На данный момент атрибут teamRoundId заполнен некоторыми числами, потому что япытался понять все правильно.

Заявление, которое я считаю наиболее близким к тому, что я пытаюсь сделать, таково:

drop procedure if exists j;
delimiter $$
CREATE PROCEDURE j()
BEGIN 
DECLARE v INT DEFAULT 1;
DECLARE c INT DEFAULT 0;
DECLARE d INT DEFAULT 1;

 WHILE v < 64 DO
    UPDATE `ssshortagerule`
    SET `teamRoundId` = v
    Where teamId = d AND roundId = c;
    IF c < 6 THEN
    SET c = c + 1;
    ELSE
    SET c = 0 AND d = d + 1;
    END IF;
    SET v = v + 1;
END WHILE;
END $$
delimiter ;
call j();

Так что teamId 1 и roundId 0 должны быть teamRoundID 1, teamId 1,roundId 1 -> teamRoundId 2 и т. д. до 63. Чего мне не хватает в моем заявлении?

Можно сказать, что teamRoundId с 59 по 63 был сгенерирован указанным выше заявлением.2 было добавлено вручную.

Дополнительная информация: в этой таблице 7 (от 0 до 6) раундов и 9 команд, но не у всех есть запись в этой таблице

1 Ответ

0 голосов
/ 24 апреля 2018

Не может быть оператора AND между 2 переменными с помощью команды SET:

drop procedure if exists j;
delimiter $$
CREATE PROCEDURE j()
BEGIN 
DECLARE v INT DEFAULT 1;
DECLARE c INT DEFAULT 0;
DECLARE d INT DEFAULT 1;

 WHILE v < 64 DO
    UPDATE `ssshortagerule`
    SET `teamRoundId` = v
    Where teamId = d AND roundId = c;
    IF c < 6 THEN
    SET c = c + 1;
    ELSE
    SET c = 0;
    SET d = d + 1;
    END IF;
    SET v = v + 1;
END WHILE;
END $$
delimiter ;
call j();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...