bueeenas, mi duda es, como hacer lo siguiente en mysql
tengo dos tablas.... tabla1 y tabla2
y un valor1
quiero insertar valor1 en tabla1 solo si el valor existe en tabla2
el codigo que hice es este....pero no funciona...
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor`(in idempleado integer)
BEGIN
if exists
(select empleados.idEmpleado
from empleados
where (empleados.idEmpleado=idempleado)
)
insert into supervisores values (0,idempleado);
END
Me da el MySql Error Number 1064, pidiendo que revise el manual de sintaxis.
jaja, ya logré resolver el problema u.uU no habia puesto ni el 0 para el valor de la columna autoincrease, ni habia puesto el endif. así quedó el código
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor`
(in idempleado integer)
BEGIN
if exists
(select *
from empleados
where empleados.idEmpleado=idempleado
)
then
if not exists
(select *
from supervisores
where supervisores.idEmpleado=idempleado
)
then
insert into supervisores values (0,idempleado);
end if;
end if;
END
Creo que sería mejor así, no entiendo del porque hacer 2 querys con lo mismo, solo que una si va a cumplirse la condición, usa mejor la clausula ELSE. Así,
CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor` (in idempleado integer)
BEGIN
IF NOT EXISTS (SELECT * FROM empleados WHERE empleados.idEmpleado = idempleado) THEN
BEGIN
INSERT INTO supervisores VALUES (0,idempleado);
PRINT 'Empleado ingresado correctamente'
END
ELSE
PRINT 'El empleado ya existe'
END