У меня есть таблица с названием «Платежи», эта таблица выглядит следующим образом
HouseNumber| Month | Amount| Status
У меня есть 104 дома для администрирования, номера go от 1 до 104, пока заплатили только 5 домов Мартовская аренда, и я сделал вставку в свою таблицу для этих.
Если вы выполните этот запрос:
SELECT * FROM Payments WHERE Month = "March"
, вы получите следующий результат
- HouseNumber| Month | Amount| Status
- 1 |March | 370 | Paid
- 16 |March | 370 | Paid
- 24 |March | 370 | Paid
- 46 |March | 370 | Paid
- 99 |March | 370 | Paid
Что я пытаюсь сделать вставку для других 99 домов со статусом «Не оплачено»
Я могу придумать несколько способов достичь этой цели, но я считаю, что ни один из них не является лучшей практикой для этого .
Я думал о том, чтобы сделать это вручную, вставив 99 инструкций или выбрав оплаченный номер housenumber и добавив их в массив PHP и сделав вставки с циклом PHP, который на самом деле пришел с запросом, но я получаю много синтаксических ошибок
DELIMITER //
CREATE PROCEDURE myproc()
BEGIN
DECLARE i INT DEFAULT 1;
CREATE TEMPORARY TABLE march (housenumber int);
WHILE (i <= 104) DO
IF i NOT IN (SELECT `housenumber` FROM Payments WHERE `Month` = "2020-03-01")
BEGIN
INSERT INTO March (housenumber) VALUES (i)
SET i = i + 1
END
END WHILE;
SELECT * FROM marc;
END//
DELIMITER ;
Я хочу иметь возможность сделать это только с одним запросом