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

Ayuda con una consulta...

Estas en el tema de Ayuda con una consulta... en el foro de Bases de Datos General en Foros del Web. Que tal amigos, necesito hacer una consulta pero no me sale, el caso seria este: Tabla |PLANTILLA |CLAVE |R |C |VALOR |Plantilla a |10Seccion1 |5 ...
  #1 (permalink)  
Antiguo 04/10/2006, 09:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Pregunta Ayuda con una consulta...

Que tal amigos, necesito hacer una consulta pero no me sale, el caso seria este:

Tabla

|PLANTILLA |CLAVE |R |C |VALOR

|Plantilla a |10Seccion1 |5 |2 |MANTENIMIENTO
|Plantilla a |10Seccion1 |2 |4 |29/07/2006
|Plantilla a |11Seccion1 |5 |2 |CAPACITACION
|Plantilla a |11Seccion1 |2 |4 |29/08/2006
|Plantilla a |12Seccion1 |5 |2 |ASESORIAS
|Plantilla a |12Seccion1 |2 |4 |29/09/2006
|Plantilla a |10Seccion1 |5 |2 |MANTENIMIENTO
|Plantilla a |10Seccion1 |2 |4 |29/10/2006

Lo que quiero hacer es seleccionar los valores sin repetir del campo VALOR(lo que es MANTENIMIENTO, ASESORIAS, etc.), pero condicionando que el año, que esta en otra fila de la tabla y que sea de la misma CLAVE, corresponda a uno q yo le determine, no se si me explique, quise hacer esto:

Código HTML:
select distinct valor from Tabla
where valor in (Select valor from Table where 
 CLAVE like '%Seccion1' and R='5' and C='2'
  and plantilla='Plantilla a'
and valor in (Select valor from Tabla
 where CLAVE like '%Seccion1' 
     and R='2' and C='4'
      and plantilla='Plantilla a' and valor like '%2006'))
No se si me explique, si no es asi diganmelo y tratare de plantearlo mejor...
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 04/10/2006, 10:34
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 1 mes
Puntos: 3
Hola, no se que BD estes usando, pero en Oracle lo haria de esta forma:
Código:
select distinct valor from Tabla
where valor in (Select valor from Table where 
 CLAVE like '%Seccion1' and R='5' and C='2'
  and plantilla='Plantilla a' AND to_date(valor,'yyyy')=to_date('2006','yyyy')
Lo que debes hacer es convertir ese campo a fecha, claro esta, solo te saldrá con aquellos valores que tengan la característica de una fecha (ejemplo: 20/12/2006).
Si usas otras BD, debes ver cual función debes usar para convertir ese campo, por ejemplo, si no me equivoco, en Sql Server es convert, en Mysql, si no me equivoco, es format_date, etc...
Yo lo haría de esa forma.
O también haciendo un substring de los 4 últimos valores.
No hay necesidad de que hagas el último IN.....
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 04/10/2006, 11:12
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Hola, estoy usando SQLServer y no comprendo bien lo que me propones, segun lo que veo quieres convertir el campo a fecha, creo que no me explique bien:
|Plantilla a |10Seccion1 |5 |2 |MANTENIMIENTO
|Plantilla a |10Seccion1 |2 |4 |29/07/2006

Quiero seleccionar el valor (MANTENIMIENTO) que es el que me da la condicion de q R=5, C=2, etc, pero ademas quiero q solo me la de si tambien se cumple q el valor, que ya es de otra fila, en la fecha tenga un valor que le digo, en este caso '2006', por eso utilize el like y su condicion es q R=2, C=4.

No se como explicarlo bien, pero creo que como me lo dices solo trataria de convertir el campo valor (MANTENIMIENTO) a tipo fecha, si crees q estas bien explicamelo por favor... de todas maneras gracias por responder...
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 04/10/2006, 11:34
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 1 mes
Puntos: 3
Hola, no me habia fijado de la primera condición, lo primero que se me ocurre es hacer un UNION:
Código:
select distinct valor from Tabla
where CLAVE like '%Seccion1' and R='5' and C='2'
  and plantilla='Plantilla a'
UNION  
select distinct valor from Tabla
where CLAVE like '%Seccion1' and R='2' and C='4' and plantilla='Plantilla a' and 
	  substring(valor,7,4)='2006'
Para lo del año, lo hago con substring, espero que te ayude....
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 04/10/2006, 13:36
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Je Je, tal vez esto ya te moleste, pero ya lo habia probado asi y lo único que me hace es me da el valor de la fecha y el valor de MANTENIMIENTO por ejemplo, lo que necesito es q solo me arroje el valor (MANTENIMIENTO) si es que el valor que tiene la fecha tiene la concurrencia del Año (2006) que le de...mas bien lo del año es como una condicion y no consulta, pero no se si se pueda hacer sin tener que meter codigo de programacion.
__________________
Wow! No se que decir...
  #6 (permalink)  
Antiguo 04/10/2006, 14:03
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 1 mes
Puntos: 3
Entiendo. Y si lo haces asi?
Código:
select distinct valor from Tabla
where CLAVE like '%Seccion1' and R='5' and C='2'
  and plantilla='Plantilla a' and EXISTS
  (select * from Tabla
   where CLAVE like '%Seccion1' and R='2' and C='4' and plantilla='Plantilla a' and substring(valor,7,4)='2006')
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #7 (permalink)  
Antiguo 04/10/2006, 14:08
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Que creen, ya lo Resolvi, lo que me resulto fue lo siguiente, no era tan dificil, solo que ando concentrado jeje...

Código HTML:
Select Distinct Valor From doc_catalogo_valores where 
      plantilla='Cursos de Capacitación'  
       and cve_docto like '%Seccion1'
        and no_renglon='5' and no_columna='2'
          and  cve_docto in (Select cve_docto from doc_Catalogo_valores 
                 where cve_docto like '%Seccion1' 
                  and no_renglon='2' and no_columna='4'
                   and substring(valor,7,9) ='2009')
__________________
Wow! No se que decir...
  #8 (permalink)  
Antiguo 04/10/2006, 14:09
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Y muchas Gracias PequeñoMauro!
__________________
Wow! No se que decir...
  #9 (permalink)  
Antiguo 04/10/2006, 14:12
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 1 mes
Puntos: 3
That's good man
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
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 15:43.