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