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:
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 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`