Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 28-11-2005
lbuelvas lbuelvas is offline
Miembro
 
Registrado: may 2003
Ubicación: Colombia
Posts: 378
Poder: 24
lbuelvas Va por buen camino
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
__________________
Luis Fernando Buelvas T.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 05:29:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi