Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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 (mysql) [Seleccionar]
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.
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 (mysql) [Seleccionar]

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
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 (sql) [Seleccionar]
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