SQL Server - Algoritmo SQL para combinaciones de productos

   
Vista:

Algoritmo SQL para combinaciones de productos

Publicado por Albert (1 intervención) el 16/05/2012 00:18:51
Problema 1
Situacion:
Base de datos en SQL Server 2008
Lenguaje de programación SQL
Imaginaos la siguiente situación:
Tenemos una serie de n productos, los cuales pueden estar categorizados según unos ratings. 4 tipos de categorización con x valores diferentes. Donde n podría ser de 1 a 14 por ejemplo y x suele ser de una cardinalidad de 3, aunque podría ser más.
Dado esto, necesitamos sacar todas las combinaciones posibles en grupos de ratings con diferentes combinaciones entre ellas.
Ejemplo práctico:
Dados productos P1 y P2. Y los ratings R1 (valores 1,2 y 3) y R2 (1,2,3)
Tendríamos que cada producto tiene las siguientes posibilidades:
Producto Rating 1 Rating 2
P1 1 1
P1 1 2
P1 1 3
P1 2 1
P1 2 2
P1 2 3
. .
. .
. .
P2 1 1
P2 1 2
P2 1 3
. .

El resultado final esperado seria más o menos:
Grupo Producto Rating 1 Rating 2
1 P1 1 1
1 P2 1 1
2 P1 1 1
2 P2 1 2
3 P1 1 1
3 P2 1 3
. . . .
. . . .
. . . .

Necesitaríamos todas las posibles combinaciones de productos y ratings. Donde la cardinalidad de los grupos sería igual al número de productos. Es decir, si fuesen 3 productos, tendríamos grupos de 3 productos. En el ejemplo, tan solo eran de dos. Además necesitamos, que los grupos no se repitan, ya que el orden no importa en este caso. Es decir, es lo mismo el grupo P1 R1=1 R2=1/ P2 R2=1 R2=2 que P2 R2=1 R2=2/P1 R1=1 R2=1
Tenemos un algoritmo de aproximación, que trata de hacer un bucle en el que empiezan haciéndose grupos de 2, luego a partir de estos de dos, los de 3 y así sucesivamente según el número de productos. El problema es la lentitud de este algoritmo a la que el número de productos aumenta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Algoritmo SQL para combinaciones de productos

Publicado por Juan Gaete juan.gaete@oracle.com (2 intervenciones) el 13/06/2012 15:45:38
esto se resuelve con una consulta basica al producto cartesiano



SELECT
*
from
PRODUCTO, RAITING, CATEGORIA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar