MySQL - Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

 
Vista:

Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

Publicado por Ricardo (3 intervenciones) el 20/10/2019 23:47:15
Buenas amigos, mi problema es de un proceso almacenado el cual si es creado, sintácticamente esta bien, pero a la hora que realizó un CALL con los parámetros que me pide me lanza el error de :
1
Unknown column 'producto_id' in 'where clause'
solo cuando hago la llamada.

esta es la tabla de compras :

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE compras(
	id_compra INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    producto_id INT NOT NULL,
    categoria_id INT NOT NULL,
    cantidad INT NOT NULL,
    precio_unitario DECIMAL(8, 2) NOT NULL,
    precio_total DECIMAL(8,2) NOT NULL,
    fecha_compra DATETIME NOT NULL,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id_usuario),
    FOREIGN KEY (producto_id) REFERENCES productos(id_producto),
    FOREIGN KEY (categoria_id) REFERENCES categorias(id_categoria)
);



este es el proceso almacenado que es el registro de la compras :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
DELIMITER $$
 
	CREATE PROCEDURE registro_compras (
		_usuario INT,
		_producto INT,
		_categoria INT,
		_cantidad INT
	)
 
	BEGIN
 
		DECLARE _precio_unitario DECIMAL(8, 2);
		DECLARE _precio_total DECIMAL(8, 2);
 
		SET _precio_unitario = (SELECT precio FROM productos WHERE id_producto = _producto);
		SET _precio_total = (SELECT precio * _cantidad FROM productos WHERE id_producto = _producto);
 
		INSERT INTO compras VALUES(NULL, _usuario, _producto, _categoria, _cantidad, _precio_unitario, _precio_total, NOW());
 
	END
 
$$


agradecería su amable ayuda, muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

Publicado por Francisco (73 intervenciones) el 21/10/2019 18:06:40
Hola

Es product_id o id_product ??

1
2
SET _precio_unitario = (SELECT precio FROM productos WHERE id_producto = _producto);
SET _precio_total = (SELECT precio * _cantidad FROM productos WHERE id_producto = _producto);

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

Publicado por Ricardo (3 intervenciones) el 21/10/2019 18:37:13
Es producto_id en la tabla compras, y id_producto en la tabla de productos, todo lo he trabajado en español amigo, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

Publicado por Francisco (73 intervenciones) el 21/10/2019 23:17:52
Hola

Pues probe tu codigo y no pude replicar el error en cuestion.

Lo puse aqui:

https://rextester.com/WDZMXD66314

Aqui dejo el codigo de prueba

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#MySQL 5.7.12
#please drop objects you've created at the end of the script
#or check for their existance before creating
#'\\' is a delimiter
 
select version() as 'mysql version';
 
DROP TABLE IF EXISTS compras;
DROP TABLE IF EXISTS usuarios;
DROP TABLE IF EXISTS productos;
DROP TABLE IF EXISTS categorias;
 
 
CREATE TABLE usuarios(
	id_usuario INT NOT NULL PRIMARY KEY
    );
INSERT INTO usuarios values(5);
INSERT INTO usuarios values(6);
INSERT INTO usuarios values(7);
INSERT INTO usuarios values(8);
INSERT INTO usuarios values(9);
 
CREATE TABLE productos(
	id_producto INT NOT NULL PRIMARY KEY,
    precio DECIMAL(10,2) NOT NULL
    );
INSERT INTO productos(id_producto, precio) values(10,30);
INSERT INTO productos(id_producto, precio) values(11,31);
INSERT INTO productos(id_producto, precio) values(12,32);
INSERT INTO productos(id_producto, precio) values(13,33);
INSERT INTO productos(id_producto, precio) values(14,34);
 
 
CREATE TABLE categorias(
	id_categoria INT NOT NULL PRIMARY KEY
    );
INSERT INTO categorias values(20);
INSERT INTO categorias values(21);
INSERT INTO categorias values(22);
INSERT INTO categorias values(23);
INSERT INTO categorias values(24);
 
CREATE TABLE compras(
	id_compra INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    usuario_id INT NOT NULL,
    producto_id INT NOT NULL,
    categoria_id INT NOT NULL,
    cantidad INT NOT NULL,
    precio_unitario DECIMAL(8, 2) NOT NULL,
    precio_total DECIMAL(8,2) NOT NULL,
    fecha_compra DATETIME NOT NULL,
    FOREIGN KEY (usuario_id) REFERENCES usuarios(id_usuario),
    FOREIGN KEY (producto_id) REFERENCES productos(id_producto),
    FOREIGN KEY (categoria_id) REFERENCES categorias(id_categoria)
);
 
DROP PROCEDURE registro_compras;
CREATE PROCEDURE registro_compras (
		_usuario INT,
		_producto INT,
		_categoria INT,
		_cantidad INT
)
BEGIN
    DECLARE _precio_unitario DECIMAL(8, 2);
	DECLARE _precio_total DECIMAL(8, 2);
 
	SET _precio_unitario = (SELECT precio FROM productos WHERE id_producto = _producto);
	SET _precio_total = (SELECT precio * _cantidad FROM productos WHERE id_producto = _producto);
 
	INSERT INTO compras VALUES(NULL, _usuario, _producto, _categoria, _cantidad, _precio_unitario, _precio_total, NOW());
 
END;
 
CALL registro_compras(5, 10, 20, 30);
CALL registro_compras(6, 11, 21, 31);
CALL registro_compras(7, 12, 22, 32);
CALL registro_compras(8, 13, 23, 33);
CALL registro_compras(9, 14, 24, 34);
 
SELECT * FROM compras;


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Unknown column 'producto_id' in 'where clause' dentro de un "procedure"

Publicado por Ricardo (3 intervenciones) el 21/10/2019 23:46:45
Muchas Gracias Por tu ayuda, tu ejemplo efectivamente funciona, sin embargo revise y compare tu código junto al que tengo, y esta idéntico, por esa razón sigo sin entender por qué MySQL me da ese error. lo volveré a realizar de cero mejor. Muchas gracias por su valiosa ayuda amigo. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar