Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problema De Consultas

Estas en el tema de Problema De Consultas en el foro de Oracle en Foros del Web. Tengos estas Tablas REGION codigo pk nombre DEPARTAMENTO codigo pk nombre codigo_region fk EMPLEADO codigo pk nombre codigo_departamento fk 1. Necesito una lista que muestre ...
  #1 (permalink)  
Antiguo 24/10/2006, 22:11
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Exclamación Problema De Consultas

Tengos estas Tablas

REGION
codigo pk
nombre

DEPARTAMENTO
codigo pk
nombre
codigo_region fk

EMPLEADO
codigo pk
nombre
codigo_departamento fk


1. Necesito una lista que muestre el numero de regiones que poseen mas de 3departamentos

2. Ademas necesito una lista que muestre el nombre de cada region y el numero de empleado que posee.

Por favor necesito esta ayuda lo antes posible.. Muchas Gracias!!!
  #2 (permalink)  
Antiguo 25/10/2006, 03:55
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 16 años, 4 meses
Puntos: 0
Prueba esta consulta a ver que te parece.

select S.codigo_region, R.nombre, S.CONTADOR
from Region R, (Select D.codigo_region, count( D.Codigo) CONTADOR From Departamento D group by D.codigo_region) S
where S.CONTADOR >3
and S.codigo_region=R.codigo_region

Si no me he equivocado, que podría ser , te devuelve una lista con el código de la región, su nombre y el número de departamentos que tiene esa región. ( siempre y cuando sean más de 3)

Con una pequeña modificación hará lo que pides en el primer punto.
Y te servirá de ejemplo para el segundo :)
El segundo punto lo resuelves de una forma muy parecida, pero cruzando las 3 tablas.

No soy partidario de hacer las cosas exactamente como las piden, si no, el interesado no aprende nada.

Espero que te sea de ayuda. Si tienes problemas y te lias mucho vuelve a preguntar
  #3 (permalink)  
Antiguo 25/10/2006, 11:44
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
No entiendo que son las S., R. y D, ademas del contador que pones alli
lo transcribi esxactamente como lo pones y me da error.
La verdad no soy experto en oracle y pues a lo mejor eso se supone un reemplazo que debo hacer pero yo no entiendo, espero me puedas resolver la duda. Gracias!!!
  #4 (permalink)  
Antiguo 25/10/2006, 14:10
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Ok ya entendi todo bien... funciono perfecto!!.. Gracias!!
Pero no era lo que necesitaba exactamente. Y la verdad no he podido aplicarlo a mis preguntas y lo necesito lo antes posible para un proyecto a entregar manana temprano!!..

1. Desplegar el nombre de cada de region y su nmero de empleados

2. Desplegar el numero de departamentos que contienen mas de 3 departamentos (un unico valor)

Por fa ayudenmeeee... lo necesito urgente!! Gracias!!!
  #5 (permalink)  
Antiguo 26/10/2006, 03:15
Avatar de MACGREGOR  
Fecha de Ingreso: enero-2005
Mensajes: 89
Antigüedad: 16 años, 4 meses
Puntos: 0
La S, R y la D son abreviaturas para los nombres de las tablas, si utilizaras access deberias ponerlo como .... from Region As R .... en lugar de .... from Region R ....


select S.codigo_region, R.nombre, S.CONTADOR
from Region R, (Select D.codigo_region, count( D.Codigo) CONTADOR From Departamento D group by D.codigo_region) S
where S.CONTADOR >3
and S.codigo_region=R.codigo_region


Como ya te dije, con esta select consigues las regiones (id y nombre) y el número de departamentos de cada región ( si tiene más de 3).
Si quieres solo el nombre de las regiones quita de la primera línea el código y el contador, tendrás la lista de regiones que cumplen tu condición.
Si solo quieres saber cuantas, cambia la primera línea por Select count(R.codigo)


Para el segundo punto ...
2. Ademas necesito una lista que muestre el nombre de cada region y el numero de empleado que posee.


Select R.nombre, count(E.codigo)
from Region R, Departamento D, Empleado E
where R.codigo=D.codigo_region and D.codigo=E.codigo_departamento
Group by R.nombre


Solo espero que entiendas cada consulta y aprendas algo, ya que de lo contrario no te hago ningún favor dandote el resultado.

Para cualquier duda ya sabes .

Un saludo.
  #6 (permalink)  
Antiguo 26/10/2006, 06:44
 
Fecha de Ingreso: octubre-2006
Mensajes: 5
Antigüedad: 14 años, 7 meses
Puntos: 0
Muchas gracias MACGREGOR, todo super bien... era precisamente lo que necsitaba y si entendi lo que ponse en las consultas ya que esto era para una exposicion y en la explicacion me solicitaron unas consultas un poco diferentes y logre manejarlas en base a las que me diste.
Muchass Gracias Otra vez!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:20.