Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 1 votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Problema complejo de SQL
Autor Mensaje
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #1
Problema complejo de SQL
hola gente, necesito la colaboración de todos los cráneos de la UTN para resolver un problema con unos datos en sql server.
tengo la siguiente tabla:



| categoria | proveedor | nombre | fecha inicio | fecha fin | precio |
| A | 1 | papa | 01/01/01 | 05/01/01 | 2 |
| A | 2 | papa | 01/01/01 | 05/01/01 | 3 |
| A | 3 | papa | 01/01/01 | 05/01/01 | 2,5 |
| B | 1 | papa | 01/01/01 | 05/01/01 | 1 |
etc




es una lista de precios de productos. cada producto puede ser provisto por distintos proveedores, y tener varias categorías según la calidad.
los precios duran X días, entonces se va manteniendo un historial de precios.
así podemos saber, por ejemplo, que las papas categoría A del proveedor 1 valían $2 desde el 01/01/01 hasta el 05/01/01.
obviamente para un mismo proveedor, producto, categoría, y período, no puede haber haber dos precios diferentes.

¿cuál es el problema? que en algún momento se introdujo un error en la carga, y quedaron inconsistencias del tipo que mencioné anteriormente.
por ejemplo, sería incorrecto tener 2 registros así:


| categoria | proveedor | nombre | fecha inicio | fecha fin | precio |
| A | 2 | papa | 01/01/01 | 05/01/01 | 3 |
| A | 2 | papa | 03/01/01 | 08/01/01 | 2,5 |



porque en ese caso (mismo producto, mismo proveedor, misma categoría) tenemos 3 días que se superponen, con diferente precio. entonces si quiero saber el precio al día 04/01/01 tengo un problema. ¿se ve?

bueno, necesito un script sql que me permita detectar estas inconsistencias. o sea, tendría que buscar y acomodar los datos, de forma que pueda comparar los períodos que se superponen. la salida debería ser los registros que son inconsistentes.

logré hacerlo en smalltalk (casi una papa diría), pero el problema que tenemos es que debemos ejecutarlo sobre una base con miles de productos, donde las columnas a comparar no son categoría, proveedor y nombre, sino que son 5 más, y tiene que evaluar todo un año para detectar inconsistencias viejas.

si puedo lograr que el motor de base de datos resuelva el problema, seguro lo hace mucho más rápido.

bueno, les dejo la inquietud. gracias de antemano, salu2.

(Este mensaje fue modificado por última vez en: 18-01-2011 14:08 por LeaTex.)
18-01-2011 14:08
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
SOY DE LA UBA! Sin conexión
Suspendido
Sin estado :(

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 12
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jan 2011
Mensaje: #2
RE: Problema complejo de SQL
Algo asi?
Create Table #TablaPrueba (Categoria Varchar(50), Proveedor Varchar(50), FechaIni int, FechaFin int)
Insert Into #TablaPrueba Values ('A','Pepe',1,14)
Insert Into #TablaPrueba Values ('A','Pepe',15,29)
Insert Into #TablaPrueba Values ('A','Pepe',19,29)
Insert Into #TablaPrueba Values ('A','Pepe',33,53)

Select b.categoria,b.proveedor,b.fechaini,b.fechafin From #TablaPrueba a , #TablaPrueba b Where b.fechaini > a.fechaini and b.fechaini < a.fechafin --and filtrar por tipo, eso ya va en tu tabla particular

Salida:
A Pepe 19 29
18-01-2011 16:50
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #3
RE: Problema complejo de SQL
Sí, algo así es lo que hago yo justamente.
El problema son los filtros =D

18-01-2011 18:11
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
SOY DE LA UBA! Sin conexión
Suspendido
Sin estado :(

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 12
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Jan 2011
Mensaje: #4
RE: Problema complejo de SQL
Create Table #TablaPrueba (Categoria Varchar(50), Proveedor Varchar(50), FechaIni int, FechaFin int)
Insert Into #TablaPrueba Values ('A','Pepe',1,14)
Insert Into #TablaPrueba Values ('A','Pepe',15,29)
Insert Into #TablaPrueba Values ('A','Pepe',19,29)
Insert Into #TablaPrueba Values ('A','Pepe',33,53)
Insert Into #TablaPrueba Values ('B','Cacho',55,70)
Insert Into #TablaPrueba Values ('B','Cacho',75,90)
Insert Into #TablaPrueba Values ('B','Cacho',95,210)
Insert Into #TablaPrueba Values ('C','GonzaSeLaCome',55,70)

Select b.categoria,b.proveedor,b.fechaini,b.fechafin
From #TablaPrueba a , #TablaPrueba b
Where b.fechaini > a.fechaini and
b.fechaini < a.fechafin and
b.Categoria=a.Categoria and
a.Proveedor=b.Proveedor

--Drop Table #TablaPrueba

y si no posteate un cacho de la tabla para verla bien.
19-01-2011 09:38
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
LeaTex Sin conexión
Presidente del CEIT
.
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.852
Agradecimientos dados: 55
Agradecimientos: 195 en 50 posts
Registro en: Apr 2008
BlogSpot Facebook Google+ Last.fm LinkedIn Twitter
YouTube
Mensaje: #5
RE: Problema complejo de SQL
(19-01-2011 09:38)SOY DE LA UBA! escribió:  y si no posteate un cacho de la tabla para verla bien.

la tabla es la que puse arriba.

pero ya está, gracias!! tu ayuda me sirvió de mucho, ya casi que tengo el problema resuelto.

tengo que detectar varios casos:

1- registros iguales (sin importar el precio), o sea mismo inicio y mismo fin.
2- mismo inicio y distinto fin.
3- distinto inicio y mismo fin.
4- distinto inicio y distinto fin, pero solapados.

así que lo dividí en 4 scripts separados para analizar mejor los casos.
como dije, la tabla es un poco más compleja. tiene 17 campos de los cuales 5 o 6 son los que debo evaluar para detectar la igualdad.

tu solución fue MUY útil, y al final era bastante sencilla. por ahí por tener un problema complejo estaba buscando soluciones complejas, y no me avivé.

gracias!

19-01-2011 13:20
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
gonnza Sin conexión
User Verde

*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 17.112
Agradecimientos dados: 763
Agradecimientos: 732 en 317 posts
Registro en: Mar 2010
BlogSpot Google+ YouTube
Mensaje: #6
RE: Problema complejo de SQL

Off-topic:
(19-01-2011 09:38)SOY DE LA UBA! escribió:  Insert Into #TablaPrueba Values ('C','GonzaSeLaCome',55,70)

Atrevido ehhh whip
la proxima que te des vuelta te mando un Delete Rep_OutboxRequestData sin que te des cuenta y digo que fuiste vos ajajajjaja lol

[Imagen: v34BEFt.gif]
19-01-2011 16:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.