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

consulta SQL funciona a medias

Estas en el tema de consulta SQL funciona a medias en el foro de SQL Server en Foros del Web. Hola colegas, tengo una consulta que me funciona a medias, me esta faltando algun detalle para que me arroje el resultado buscado: Tengo 2 tablas ...
  #1 (permalink)  
Antiguo 07/04/2011, 08:55
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
consulta SQL funciona a medias

Hola colegas, tengo una consulta que me funciona a medias, me esta faltando algun detalle para que me arroje el resultado buscado:

Tengo 2 tablas

1) Gastos_Mes
2) Gastos_Mes_Detalle

en la tabla 1, detallo los gastos uno bajo el otro, ej: luz, gas, telefono, etc, le doy un numero de id_Gasto
y en la tabla 2, agrego dichos gasto mensualmente con la fecha y el importe

lo que quiero es hacer una consulta que me muestre 2 campos, en el primero una lista "completa" de gastos de la tabla 1, y en el segundo, el importe ingresado del mes corriente.

Lo que logro es tener la lista casi completa de los gastos, algunos no los muestra si no poseen un importe ya ingresado este mes:

SELECT Gastos_Mes.Nombre, Gastos_Mes_Detalle.Importe
FROM Gastos_Mes LEFT JOIN Gastos_Mes_Detalle ON Gastos_Mes.idGasto_BS = Gastos_Mes_Detalle.IdGasto_BS
WHERE (((Year([fecha]))=2011) AND ((Month([Gastos_Mes_Detalle.FECHA]))=4)) OR (((Year([fecha])) Is Null) AND ((Month([Gastos_Mes_Detalle.FECHA])) Is Null));

muchas gracias por la ayuda
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #2 (permalink)  
Antiguo 07/04/2011, 11:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: consulta SQL funciona a medias

El problema son las condiciones de las fechas.
Prueba sin ellas.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 07/04/2011, 11:48
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

Gracias Flaviovich, si les saco las fechas me agrupa mal los items de la primera tabla, te subi un archivo de ejemplo y las 2 consultas a ver si podes ver el error, muchas gracias!!


http://rapidshare.com/files/456358824/base_de_datos.mdb
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #4 (permalink)  
Antiguo 07/04/2011, 12:46
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 17 años, 5 meses
Puntos: 180
Respuesta: consulta SQL funciona a medias

¿Porque descompones la fecha de esa forma?
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 07/04/2011, 12:52
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

Hola iislas, te digo lo que intento hacer, aunque no se si es el procedimiento correcto:

lo que busque es que me muestre aquellos meses con fecha = 4 y año = 2011, o si no tienen fecha que los muestre igual (para aquellos gastos que al dia de hoy no fueron ingresados)


lo que busco es que me muestre en la consulta, mes actual:

luz
gas $35
telefono
alquiler
personal $2000
(en fin todos los gastos que tenga) / solo los gastos que se hayan cargado este mes 04/2011


espero que se entienda, sino avisame, gracias
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #6 (permalink)  
Antiguo 07/04/2011, 14:12
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: consulta SQL funciona a medias

Prueba de esta forma:
Código SQL:
Ver original
  1. WHERE (YEAR(GMD.fecha)=2011 AND MONTH(GMD.FECHA)=4)
  2. OR GMD.fecha IS NULL

Tu archivo tiene contraseña.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #7 (permalink)  
Antiguo 07/04/2011, 14:23
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

Perdon en el apuro se me olvido quitarla, ya lo subi sin contraseña

Recien probe tu solucion y me arroja 16 gastos en vez de los 19 que posee la tabla

http://rapidshare.com/files/456380160/base_de_datos.mdb
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #8 (permalink)  
Antiguo 07/04/2011, 14:44
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: consulta SQL funciona a medias

Código SQL:
Ver original
  1. SELECT GM.Nombre, GMD.Importe
  2. FROM Gastos_Mes GM
  3. LEFT JOIN (
  4.     SELECT *
  5.     FROM Gastos_Mes_Detalle
  6.     WHERE YEAR(fecha)=2011 AND MONTH(FECHA)=4
  7. ) GMD ON GM.idGasto_BS = GMD.IdGasto_BS
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 07/04/2011, 14:53
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

buenisimo Flaviovich, mil gracias!
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #10 (permalink)  
Antiguo 14/04/2011, 10:46
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

Hola Flaviovich, me ha surgido un pequeño problema, si ingreso mas de una vez un gasto, en la tabla en vez de aparecer agrupado, me pone por ejemplo:

telefono
luz
luz
luz
gas
etc etc

SELECT GB.Nombre, GBD.Importe
FROM GB LEFT JOIN [SELECT GBD.IdGasto_BS, GBD.Fecha, sum(GBD.Importe) FROM GBD WHERE Year(fecha)=2011 AND Month(FECHA)=4]. AS GBD ON GB.idGasto_BS = GBD.IdGasto_BS

intente hace el cambio en negrita pero me da error, podras orientarme? muchas gracias
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #11 (permalink)  
Antiguo 14/04/2011, 11:24
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 19 años, 4 meses
Puntos: 39
Respuesta: consulta SQL funciona a medias

Seria asi:
Código SQL:
Ver original
  1. SELECT GB.Nombre, GBD.Importe
  2. FROM GB
  3. LEFT JOIN (
  4.     SELECT IdGasto_BS, Fecha, SUM(Importe) Importe
  5.     FROM GBD
  6.     WHERE YEAR(fecha)=2011 AND MONTH(FECHA)=4
  7.     GROUP BY IdGasto_BS, Fecha
  8. ) AS GBD ON GB.idGasto_BS = GBD.IdGasto_BS
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #12 (permalink)  
Antiguo 15/04/2011, 10:23
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 21 años
Puntos: 11
Respuesta: consulta SQL funciona a medias

ahora si, perfecto, muchas gracias!
__________________
-- Nunca te des por vencido, aún vencido -- Web

Etiquetas: medias, 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

SíEste tema le ha gustado a 1 personas




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