Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2019, 08:58
Camatagua123
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Mostrar Trabajadores sin trabajo asignado actualmente

Mostrar PERSONAS sin trabajo asignado actualmente

Buen día !

tengo 3 tablas

PERSONAS

CARGOS


CARGOS_PERSONAS

CARGOS_PERSONAS es la union de CARGOS y PERSONAS

sus campos son

ID - CARGO - PERSONA - DESDE (fecha desde que tiene cargo) - HASTA (fecha hasta que cumplio con el cargo y puede ser NULL en caso de que el cargo esté vigente)

quiero sacar las personas que no tengan cargos vigentes o que jamas hayan tenido cargo alguno.

esta consulta me devuelve lo que neesito hasta cierto punto


Código:
SELECT
    *
FROM
    `personas`
LEFT JOIN `cargo_personas` ON `persona_cargo_persona` = `id_persona`
WHERE EXISTS
    (
    SELECT
        *
    FROM
        `cargo_personas`
    WHERE
        `personas`.`id_persona` = `cargo_personas`.`persona_cargo_persona` AND `hasta_cargo_persona` IS NOT NULL
) OR NOT EXISTS(
    SELECT
        *
    FROM
        `cargo_personas`
    WHERE
        `personas`.`id_persona` = `cargo_personas`.`persona_cargo_persona`
)
GROUP BY
    `id_persona`
pero el problema está en que por ejemplo una persona que fungio de vigilante DESDE 12-12-2018 HASTA 03-03-2019 y se le asigno un cargo actual DESDE 04-03-2019 tambien me apareceria en la consulta y no deberia porque tiene cargo actual
__________________
No le pare bola a la vida, que la vida no le para bolas a uno!