Re: Consulta de codigos de producto

From: Ruben Fitó <r(dot)fito(at)ubiquat(dot)com>
To: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
Cc: "pgsql-es-ayuda(at)postgresql(dot)org" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta de codigos de producto
Date: 2015-11-04 06:45:05
Message-ID: CANiYpQwDU3NuAJc_NMSXQWkYJyCzoc+mz7MDKCKxzp_eZ9Omow@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola Sergio,

Gracias por tu respuesta y perdonad el retraso de la mia.

Efectivamente, he realizado 2 tablas nuevas:

- Una donde almaceno los comodines en forma de expresión regular posix,
junto a un id asociado → tabla_comodines(id_comodin, comodin ).
- Por otro lado creo otra tabla que relaciona las políticas con los
comodines → tabla_politica_comodin(politica , id_comodin).

Al final para encontrar la política a aplicar hago un JOIN de las tres
tablas:

SELECT * FROM
tabla_politicas a
INNER JOIN tabla_politica_comodin b ON (a.id_politica=b.id_politica)
INNER JOIN tabla_comodines c ON (b.id_comodin=c.id_comodin)
WHERE
'codigo_producto'~('^'||c.comodin::text);

Espero que pueda servirle a alguien.

Gracias.

Un saludo.

2015-10-23 15:43 GMT+02:00 Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>:

> En mi opinión lo que deberias hacer es tener una tabla con las políticas,
> que contenga un Id y campos con todas sus caracterisiticas más un campo con
> el estado (Vigente / No vigente), y otra tabla con cada uno de los
> productos asociados a cada política.
> Creo que es más sencillo y te permite ir guardando la historia de todas
> las policitcas aplicadas y los productos asociados.
>
> Saludos cordiales
>
> El 23 de octubre de 2015, 9:43, Ruben Fitó <r(dot)fito(at)ubiquat(dot)com> escribió:
>
>> Hola lista,
>>
>> Hace tiempo, realicé una consulta relacionada con los códigos de
>> productos de mi empresa, donde se tiene que hacer "best matching" conforme
>> el código de tipo de producto forma parte del código del mismo. Bueno algo
>> como expuse es:
>>
>> *12345 --> *producto* A: 12345 *00089
>> *1234578 --> *producto* B: 1234578 *0258
>>
>> Escoger el tipo de producto se pudo solucionar con la función prefix.
>>
>> Ahora, tenemos que para un producto o conjunto de productos, queremos
>> aplicar ciertas políticas de precios y hemos pensado que el tipo de
>> agrupaciones según los tipos de productos pueden ser diferentes según la
>> política a aplicar, con lo que hemos pensado en usar códigos "comodin".
>>
>> Por ejemplo:
>>
>> Tenemos varios productos:
>>
>> Código tipo producto Tipo producto Código final producto
>> Possible comodin
>> *12345 --> *producto* A: 12345 *00089
>> *12345**
>> *1234578 --> *producto* B: 1234578 *0258
>> *1234578*
>> *9876543 --> *producto* C: 9876543 *01234
>> *9876543**
>> *11111 --> *producto* D: 11111 *22222
>> *11111*
>>
>> Para TODOS los productos un posible comodín seria el asterisco(*).
>>
>>
>> Por otro lado, podemos tener varias políticas.
>>
>> - Política 1: se aplicará un 15% de descuento a todos los productos.
>> → código comodín [*].
>> - Política 2: se aplicará un 15% de descuento a todos los productos y
>> sub-productos *12345 →* código comodín [*12345**]
>> - Política 3: se aplicará un 15% de descuento a todos los productos y
>> subproductos A y D → código comodín [*12345**, *11111**]
>>
>> A nivel de aplicación necesitamos algo genérico ya que no queremos
>> programar cada vez que se incorpore una nueva política.
>>
>> Hemos pensado en que cada nueva política contenga los "conjuntos de
>> productos", por eso tenemos una tabla que los describe y hemos pensado en
>> añadir una nueva columna que contenga una lista(ARRAY) de "comodines", y de
>> ella poder saber por producto qué políticas hay que aplicar.
>>
>> - Es buena idea? No quiero volver a la conclusión que postgres ya
>> tiene algo montado y no he sabido encontrarlo. :-)
>> - En caso que POSTGRES no contemple este caso en una de sus
>> funciones, cómo seria la query para buscar si se ha de aplicar o no una
>> política?? Queremos evitar que lo procese el aplicativo y que nos de el
>> resultado directamente la BD.
>>
>> Espero haberme explicado bien.
>>
>> Gracias por su atención.
>>
>> Un saludo
>>
>> --
>> *Ruben Fitó *
>> Software Engineer
>> r(dot)fito(at)ubiquat(dot)com <j(dot)catarineu(at)ubiquat(dot)com>
>> www.ubiquat.com
>> Tota la informació continguda en aquest document i arxius adjunts és
>> CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per
>> error, si us plau elimini'l i posi's en contacte amb l'emissor.
>>
>> All information contained in this document and any attachments are
>> CONFIDENTIAL and protected under trade secret laws. If you receive this
>> message by mistake, please delete it and notify it immediately to the
>> sender.
>>
>
>
>
> --
> Sergio Valdés H.
>

--
*Ruben Fitó *
Software Engineer
[image: Ubiquat Technologies, SL] r(dot)fito(at)ubiquat(dot)com
<j(dot)catarineu(at)ubiquat(dot)com>
www.ubiquat.com
Tota la informació continguda en aquest document i arxius adjunts és
CONFIDENCIAL protegida per llei de secret comercial. Si l'ha rebut per
error, si us plau elimini'l i posi's en contacte amb l'emissor.

All information contained in this document and any attachments are
CONFIDENTIAL and protected under trade secret laws. If you receive this
message by mistake, please delete it and notify it immediately to the
sender.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Eduardo Morras 2015-11-04 06:51:33 Re: BigData con PostgreSQL
Previous Message Jaime Casanova 2015-11-04 05:11:10 Re: Desactivar y activar un trigger o constraint desde sentencia SQL