Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: KandiZickZad en 17 Octubre 2010, 19:50 pm



Título: insertar valor1 en tabla1 si valor1 existe en tabla2 [SOLUCIONADO]
Publicado por: KandiZickZad en 17 Octubre 2010, 19:50 pm
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...

Código
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor`(in idempleado integer)
  2.        if exists
  3.                (select empleados.idEmpleado
  4.                from empleados
  5.                where (empleados.idEmpleado=idempleado)
  6.                )
  7.        insert into supervisores values (0,idempleado);
  8.  

Me da el MySql Error Number 1064, pidiendo que revise el manual de sintaxis.


Título: Re: insertar valor1 en tabla1 si valor1 existe en tabla2
Publicado por: KandiZickZad en 18 Octubre 2010, 00:39 am
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

Código
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor`
  2. (in idempleado integer)
  3.        if exists
  4.                (select *
  5.                from empleados
  6.                where empleados.idEmpleado=idempleado
  7.                )
  8.        then
  9.                if not exists
  10.                        (select *
  11.                        from supervisores
  12.                        where supervisores.idEmpleado=idempleado
  13.                        )
  14.                then
  15.                        insert into supervisores values (0,idempleado);
  16.                end if;
  17.        end if;
  18.  


Título: Re: insertar valor1 en tabla1 si valor1 existe en tabla2 [SOLUCIONADO]
Publicado por: Shell Root en 18 Octubre 2010, 19:26 pm
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í,
Código
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `insertaSupervisor` (IN idempleado INTEGER)
  2. BEGIN
  3.    IF NOT EXISTS (SELECT * FROM empleados WHERE empleados.idEmpleado = idempleado) THEN
  4.        BEGIN
  5.            INSERT INTO supervisores VALUES (0,idempleado);
  6.            PRINT 'Empleado ingresado correctamente'
  7.        END
  8.    ELSE
  9.        PRINT 'El empleado ya existe'
  10. END