Disculpa mi ignorancia sobre tu diseño de la base de datos pero si es algo de elecciones no se supone que la persona solo debe estar registrada en una unica ciudad (por lo menos asi es en Colombia), si ese es tu caso deberias colocar un atributo en la tabla ELECTOR para manejar el codigo de la ciudad y podrias eliminar la tabla DETELECTOR. Esto se debe a que segun el diseño que has mostrado una persona puede aparecer en mas de una ciudad.
Sin embargo esta es una consulta para que puedas ver las personas asi no tengan determinado el lugar de eleccion.
Coloco las estructuras y unos datos de prueba para los que quieran recrear la consulta y ademas porque tu consulta hace referencia a unas tablas que desconozco:
Código SQL
[-]
CREATE TABLE ELECTOR (
CEDULA INTEGER NOT NULL,
NOMBRE VARCHAR(10) NOT NULL,
DIRECCION VARCHAR(10)
);
ALTER TABLE ELECTOR ADD CONSTRAINT PK_ELECTOR PRIMARY KEY (CEDULA);
CREATE TABLE CIUDAD (
IDECIUDAD INTEGER NOT NULL,
NOMBRECIUDAD VARCHAR(10) NOT NULL
);
ALTER TABLE CIUDAD ADD CONSTRAINT PK_CIUDAD PRIMARY KEY (IDECIUDAD);
CREATE TABLE DETELECTOR (
CEDULA INTEGER NOT NULL,
CIUDADELECCION INTEGER NOT NULL
);
ALTER TABLE DETELECTOR ADD CONSTRAINT PK_DETELECTOR PRIMARY KEY (CEDULA, CIUDADELECCION);
ALTER TABLE DETELECTOR ADD CONSTRAINT FK_DETELECTOR_CIUDAD FOREIGN KEY (CIUDADELECCION) REFERENCES CIUDAD (IDECIUDAD);
ALTER TABLE DETELECTOR ADD CONSTRAINT FK_DETELECTOR_ELECTOR FOREIGN KEY (CEDULA) REFERENCES ELECTOR (CEDULA);
Los datos:
Código SQL
[-]
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (1, 'PACO', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (2, 'HUGO', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (3, 'LUIS', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (4, 'FERNANDO', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (5, 'ANGELA', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (6, 'PATRICIA', NULL);
INSERT INTO ELECTOR (CEDULA, NOMBRE, DIRECCION) VALUES (7, 'JOSE', NULL);
INSERT INTO CIUDAD (IDECIUDAD, NOMBRECIUDAD) VALUES (1, 'CALI');
INSERT INTO CIUDAD (IDECIUDAD, NOMBRECIUDAD) VALUES (2, 'TUNJA');
INSERT INTO CIUDAD (IDECIUDAD, NOMBRECIUDAD) VALUES (3, 'POPAYAN');
INSERT INTO CIUDAD (IDECIUDAD, NOMBRECIUDAD) VALUES (4, 'BOGOTA');
INSERT INTO CIUDAD (IDECIUDAD, NOMBRECIUDAD) VALUES (5, 'CARTAGENA');
INSERT INTO DETELECTOR (CEDULA, CIUDADELECCION) VALUES (1, 1);
INSERT INTO DETELECTOR (CEDULA, CIUDADELECCION) VALUES (2, 2);
INSERT INTO DETELECTOR (CEDULA, CIUDADELECCION) VALUES (3, 4);
INSERT INTO DETELECTOR (CEDULA, CIUDADELECCION) VALUES (4, 3);
COMMIT WORK;
La consulta:
Código SQL
[-]
select a.*, b.*, c.*
from elector a
left join detelector b on (a.cedula = b.cedula)
left join ciudad c on (b.ciudadeleccion = c.ideciudad)
El primer left join es una union que te va a mostrar los datos de la tabla A asi su cedula no tenga ocurrencias en la tabla B.
Debes colocar un segundo left join, porque si colocas inner join no te arrojara registros para las personas que no tienen ciudad.
Si tu diseño cambiara y eliminas la tabla DETELECTOR la consulta quedaria
Código SQL
[-]
select a.*, b.*
from elector a
left join ciudad b on (a.ciudadeleccion = b.ideciudad)
Espero te sea de utilidad