SQL - результат хранимых процедур - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть две таблицы и A и B, и у меня есть третья таблица с результатом объединения A и B, я использую базу данных mariadb, я хочу сохранить результат в третьей таблице result_A_B, но у меня появляется это сообщение, когда я запускаю "CALLsession_cpu_procedure () ": ОШИБКА 1136 (21S01): количество столбцов не соответствует значению в строке 1

CREATE TABLE result_A_B (
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
cid nvarchar(100) NOT NULL, 
time datetime NOT NULL,
OS nvarchar(100) NOT NULL, 
program nvarchar(100) NOT NULL,
nb_OS_by_program FLOAT NOT NULL,
cpu FLOAT,
last_line int NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY (`cid`,`time`,`program`) ) ENGINE=InnoDB;


DELIMITER |
CREATE PROCEDURE session_cpu_procedure()
BEGIN
TRUNCATE result_session_cpu_CPLSVFX201P;
INSERT INTO result_session_cpu_CPLSVFX201P
SELECT DISTINCT C.cid,  C.time, C.OS, C.program, COUNT(*) as nb_OS_by_program, O.cpu, C.last_line 
FROM session_test C LEFT outer JOIN cpu_test O ON O.sid2 = C.cid and O.time = C.time and C.PROGRAM=O.MODULE 
where C.time
GROUP BY C.time, C.OS, C.program, C.last_line;
END |
DELIMITER ;

CALL session_cpu_procedure();

Я хочу знать, как устранить эту ошибку: ОШИБКА 1136 (21S01): число столбцов нене соответствует количеству значений в строке 1, спасибо за любой ответ

1 Ответ

0 голосов
/ 13 февраля 2019

У вас есть таблица с 8 столбцами.

В вашем операторе SELECT... INSERT есть 7 столбцов.

Это вызвало довольно очевидную ошибку.

Опция 1:

Поскольку у вас уже есть УНИКАЛЬНЫЙ ключ, сделайте его первичным ключом и удалите столбец AUTO_INCREMENT.

Опция 2:

Укажите в 1011 *, что столбцы опущеныстолбец auto_increment:

INSERT INTO result_session_cpu_CPLSVFX201P
  (cid, time, OS, program, nb_OS_by_program, CPU, lastline)
SELECT ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...