insertar valor1 en tabla1 si valor1 existe en tabla2 [SOLUCIONADO]

Iniciado por KandiZickZad, 17 Octubre 2010, 19:50 PM

0 Miembros y 1 Visitante están viendo este tema.

KandiZickZad

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.




d(n n)b

KandiZickZad

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




d(n n)b

Shell Root

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
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.