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

Problema con una vista

Estas en el tema de Problema con una vista en el foro de SQL Server en Foros del Web. Veamos, este es mi primer post y posiblemente lo que pregunte sea una tonteria, pero bueno ... Tengo que vrearme una vista para sacar ciertos ...
  #1 (permalink)  
Antiguo 17/09/2010, 03:16
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Problema con una vista

Veamos, este es mi primer post y posiblemente lo que pregunte sea una tonteria, pero bueno ...

Tengo que vrearme una vista para sacar ciertos datos. Vale. El problema esta en las condiciones.

Veamos:

Yo llego a la tabla X con el campo Y, y tengo que buscar en X un campo Z para ese Y.

Ahora bien, en X hay varias Y's ( a veces repetidas ) , y Z puede (o no ) ser nula. Tengo que comprobar que apra la misma Y no haya ni una solo Z no nula...

No se si me he explicado, espero que sea comprensible, si no, decidmelo, que os lo explico más detalladamente :P

Gracias de antemano a todos n_n
  #2 (permalink)  
Antiguo 17/09/2010, 08:36
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 15 años, 10 meses
Puntos: 39
Respuesta: Problema con una vista

Yo lo entendi asi:
Código SQL:
Ver original
  1. SELECT Z FROM X WHERE Y = @Y AND Z IS NOT NULL
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 20/09/2010, 05:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con una vista

Cita:
Iniciado por flaviovich Ver Mensaje
Yo lo entendi asi:
Código SQL:
Ver original
  1. SELECT Z FROM X WHERE Y = @Y AND Z IS NOT NULL
si pero no. Voy a explicarme mejor. En la tabla tenemos id y fechapago. Para cada id hay mas de una fechapago. Si ese id tiene una sola fechapago != null, ese registro ya no me interesa. Ideas?
  #4 (permalink)  
Antiguo 20/09/2010, 09:13
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 15 años, 10 meses
Puntos: 39
Respuesta: Problema con una vista

Asi:
Código SQL:
Ver original
  1. SELECT id
  2. FROM tabla
  3. GROUP id
  4. HAVING COUNT(fechapago) = 0
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 21/09/2010, 02:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Problema con una vista

Muy buena!

Lo habia solucionado asi:

Código:
select distinct fchpago_051, idmodulo_051 from T
where not exists
(select * from T
where idmodulo_051 = X and fchpago_051 is not null)
and idmodulo_051 = X
pero lo tuyo es sin duda una solucion muchisimo mejor! (para empezar porque me permite hacer la vista :P )
  #6 (permalink)  
Antiguo 23/09/2010, 01:41
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 10 años, 8 meses
Puntos: 0
Rizando el rizo

Bueno, espero que me podais ayudar, porque la cosa se me ha complicado.

Tengo tres tablas, t37, t66 y t51 de las cuales tengo los siguienetes campos:
  1. T37.IDVERSIONMODULO
  2. T37.IDEJERCICIO
  3. T66.IDVERSIONMODULO
  4. T66.IDEJERCICIO
  5. T66.IDMODULO
  6. T51.IDEJERCICIO
  7. T51.FECHAPAGO
  8. T51.IDMODULO

Para una version de mdulo, existen mucho modulos, pero me basta con que uno tenga pago para descartar la version entera.

Yo tengo los datos de la tabla 37, y ... bueno, no se me ocurre como hacerlo para casar todos los datos bien.

Gracias de "antebrazo". n_n

Última edición por Luggage186; 23/09/2010 a las 01:58
  #7 (permalink)  
Antiguo 23/09/2010, 08:40
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 15 años, 10 meses
Puntos: 39
Respuesta: Problema con una vista

Por eso es mejor plantear claro el problema desde el principio.
Código SQL:
Ver original
  1. SELECT T37.IDVERSIONMODULO, T37.IDEJERCICIO, T66.IDMODULO
  2. FROM T37
  3. INNER JOIN T66 ON T37.IDVERSIONMODULO = T66.IDVERSIONMODULO AND T37.IDEJERCICIO = T66.IDEJERCICIO
  4. INNER JOIN T51 ON T66.IDEJERCICIO = T51.IDEJERCICIO AND T66.IDMODULO = T51.IDMODULO
  5. GROUP BY T37.IDVERSIONMODULO, T37.IDEJERCICIO, T66.IDMODULO
  6. HAVING COUNT(T51.FECHAPAGO) = 0
Y me parece que en tu tabla T51 falta el campo IDVERSIONMODULO.
Suerte!
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: vistas
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 05:12.