Oracle - Problema al hacer una Query entre dos tablas

 
Vista:

Problema al hacer una Query entre dos tablas

Publicado por Conkeror (5 intervenciones) el 02/05/2006 12:07:52
Os explico mi problema, tengo una bdd hecha en oracle 8i. Y quiero hacer un informe donde me salga Departamento 1 ... y sus empleados(si tiene), Departamento 2 .... y sus empleados.

Estas son las TABLAS:

CREATE TABLE DEPARTAMENTO(
ID_DPTO NUMBER(9) CONSTRAINT cp_departamento_id_dpto PRIMARY KEY,
NOM_DPTO VARCHAR2(50),
DES_DPTO VARCHAR2(50),
CONSTRAINT ck_departamento_id_dpto CHECK (ID_DPTO>0)
);

CREATE TABLE EMPLEADO(
ID_EMPLE NUMBER(9) CONSTRAINT cp_empleado_id_dpto PRIMARY KEY,
USER_EMPLE VARCHAR2(20) NOT NULL,
PASS_EMPLE VARCHAR2(20) NOT NULL,
NOM_EMPLE VARCHAR2(50),
TEL_EMPLE NUMBER(9),
PUES_EMPLE VARCHAR2(50),
EMAIL_EMPLE VARCHAR(50),
ID_DPTO NUMBER(9),
CONSTRAINT ca_empleado_id_dpto FOREIGN KEY (ID_DPTO) REFERENCES DEPARTAMENTO,
CONSTRAINT ck_empleado_id_emple CHECK (ID_EMPLE>0)
);

He conseguido mostrar sólo los departamentos que tienen empleados, los que no tienen no me los muestra.

SELECT D.*, E.* FROM DEPARTAMENTO D, EMPLEADO E WHERE (D.ID_DPTO=E.ID_DPTO) AND (D.ID_DPTO>=:NDEPAR_A AND D.ID_DPTO<=:NDEPAR_B) ORDER BY D.ID_DPTO

Los informes lo hago con un programa externo, Report Manager. Así que, haber si me ayudais con la SQL.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema al hacer una Query entre dos tablas

Publicado por juanpa (16 intervenciones) el 02/05/2006 17:04:50
tu query debería ser algo como lo que sigue:

Select D.*, E.* //lo puse así por ahorrar tiempo, pero debes poner los campos para que sea mas entendible y elegante, lo otro es burdo
FROM DEPARTAMENTO D, EMPLEADO E
WHERE D.ID_DPTO=E.ID_DPTO
ORDER BY D.ID_DPTO

con esto muestras todos los departamentos que tengan empleados los que no tienen empleados obviamente no saldran aunque lo podrias arreglar reemplazando esta sentencia en el where.

WHERE D.ID_DPTO = (+) E.ID_DPTO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al hacer una Query entre dos tablas

Publicado por Conkeror (5 intervenciones) el 02/05/2006 19:19:28
Gracias tio.....:D

Me has sacado de un apuro, cuando lo refine lo cuelgo aquí para que le sirva a más de uno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema al hacer una Query entre dos tablas

Publicado por Conkeror (5 intervenciones) el 02/05/2006 19:26:40
Ya está solucionado, con esto mostrariamos los departamentos y los empleados que pertenecen a ellos. Los departamentos, que no tengan asignados empleados saldran vacíos.

SELECT D.*, E.* FROM DEPARTAMENTO D, EMPLEADO E WHERE (D.ID_DPTO=E.ID_DPTO(+)) AND (D.ID_DPTO>=:NDEPAR_A AND D.ID_DPTO<=:NDEPAR_B) ORDER BY D.ID_DPTO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar