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

consulta anidada en sql server

Estas en el tema de consulta anidada en sql server en el foro de SQL Server en Foros del Web. hola amigos del foro: Aqui ando de nuevo con otra duda, me encuentro con la siguiente problematica: Tengo una tabla llamada CREDITOS que contiene los ...
  #1 (permalink)  
Antiguo 12/04/2010, 12:21
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
consulta anidada en sql server

hola amigos del foro:

Aqui ando de nuevo con otra duda, me encuentro con la siguiente problematica:

Tengo una tabla llamada CREDITOS que contiene los siguientes datos:

Id_tasa Plazo_dias Estado_tasa

0001 120 V
0002 120 V
0003 2 V
0004 122 V

y tengo otra tabla llamada COBRO_MES que contiene estos datos

Id_tasa Contador Dia_inicial Dia_final Seguro Interes Almacenaje
0001 1 1 30 0.001 0.0013333 0.001
0001 2 31 60 0.0013333 0.0013333 0.0013333
0001 3 61 90 0.0016666 0.0023333 0.001
0001 4 91 120 0.002 0.002 0.001
0002 1 1 120 0.0016666 0.0023333 0.001
0003 1 1 2 0.01 0.025 0.01
0004 1 1 122 5.459E-06 1.36557E-05 4.6393E-06


Ahora lo que quiero hacer es una consulta anidada de las dos tablas que me arroje los siguientes datos

Id_tasa N
0001 4
0002 1

lo que quiero es que me filtre el Id_tasa y cuantos registros tiene el mismo Id_tasa en la tabla COBRO_MES

hice la siguiente consulta que muestro abajo:

select count(*) as N from COBRO_MES where Id_tasa in(Select Id_tasa from CREDITOS where Plazo_dias=120 and Estado_tasa='V');

pero no me arroja los datos como yo los necesito solo me pone esto

N

5

solo me pone este 5 pero suma las 4 veces que aparece el Id_tasa 0001 en la tabla COBRO_MES mas una vez que aparece
la tasa en la tabla CREDITOS

espero que alguien pudiera resolver mi duda haber si es posible hacer eso con una consulta anidada en sql
o si no es posible pues desengañarme de una vez

De antemano muchas gracias a todos por sus respuestas

Saludos a todos
  #2 (permalink)  
Antiguo 12/04/2010, 12:25
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta anidada en sql server

salieron los datos de las tablas movidas tratare de ponerlos de nuevo haber si salen bien esta vez

TABLA CREDITOS

Id_tasa Plazo_dias Estado_tasa

0001 120 V
0002 120 V
0003 2 V
0004 122 V

TABLA COBRO_MES

Id_tasa Contador Dia_inicial Dia_final Seguro Interes Almacenaje
0001 1 1 30 0.001 0.0013333 0.001
0001 2 31 60 0.0013333 0.0013333 0.0013333
0001 3 61 90 0.0016666 0.0023333 0.001
0001 4 91 120 0.002 0.002 0.001
0002 1 1 120 0.0016666 0.0023333 0.001
0003 1 1 2 0.01 0.025 0.01
0004 1 1 122 5.459E-06 1.36557E-05 4.6393E-06

Resultado que quiero Obtener

Id_tasa N
0001 4
0002 1
  #3 (permalink)  
Antiguo 12/04/2010, 13:01
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: consulta anidada en sql server

Bueno, pues no le veo mucha complicacion, si deseas obtener el total de COBROS del mes, filtrando por aquellos que en creditos sean iguales a PLAZO de 120 y estado en V,entonces.


SELECT c.id_tasa, Total_Cobros
FROM CREDITOS c JOIN (SELECT id_tasa, COUNT(id_tasa) as Total_Cobros GROUP BY id_tasa) b
ON c.id_tasa = b.id_tasa
WHERE c.Plazo_dias = 120
AND c.Estado_tasa = 'V'
  #4 (permalink)  
Antiguo 12/04/2010, 15:05
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta anidada en sql server

hola:

muchas gracias por la respuesta cale la opcion que me diste pero me marca error y trate de hacer una nueva consulta con la idea que me das y quedo asi:

select CREDITOS.Id_tasa from CREDITOS inner join(Select count(Id_tasa) as Total group by Id_tasa) on CREDITOS.Id_tasa = COBRO_MES.Id_tasa where CREDITOS.Plazo_dias=120 and CREDITOS.Estado_tasa='V'

pero marca error cerca de on

no se porque marca ese error y no se si me di a entender bien pero lo que yo quiero es que me filtre los Id_tasa de la tabla creditos y obtener de la tabla COBRO_MES cuantos registros hay de esa tasa

gracias por las respuestas
  #5 (permalink)  
Antiguo 12/04/2010, 15:10
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: consulta anidada en sql server

El sub-select, debe tener un ALIAS y no se lo estas dando
  #6 (permalink)  
Antiguo 12/04/2010, 15:38
 
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: consulta anidada en sql server

hola islas:

mira puse la consulta tal cual tu me la diste y me marca estos errore:

Mens. 207, Nivel 16, Estado 1, Línea 2
El nombre de columna 'id_tasa' no es válido.
Mens. 207, Nivel 16, Estado 1, Línea 2
El nombre de columna 'id_tasa' no es válido.
Mens. 207, Nivel 16, Estado 1, Línea 2
El nombre de columna 'id_tasa' no es válido.

que el nombre id_tasa no es valido le cambie el nombre poniendole la i mayuscula tal cual como la pongo en el nombre de la tabla asi Id_tasa y aun asi marca el mismo error
cual será el error que debo corregir???
  #7 (permalink)  
Antiguo 12/04/2010, 16:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: consulta anidada en sql server

Con el permiso de Isaias.
Código SQL:
Ver original
  1. SELECT Id_tasa,COUNT(Id_tasa) AS Total
  2. FROM CREDITOS c
  3. INNER JOIN COBRO_MES cm ON c.Id_tasa = cm.Id_tasa
  4. WHERE c.Plazo_dias = 120 AND c.Estado_tasa = 'V'
  5. GROUP BY Id_tasa
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #8 (permalink)  
Antiguo 12/04/2010, 16:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: consulta anidada en sql server

Faltaria indicar en el count, de que tabla hara el conteo, creo..........

Etiquetas: server, sql
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 02:40.