algoritmo complicado para consulta

From: mmiranda(at)americatel(dot)com(dot)sv
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: algoritmo complicado para consulta
Date: 2005-04-21 19:35:59
Message-ID: 76E0DAA32C39D711B6EC0002B364A6FA043DCF07@amsal01exc01.americatel.com.sv
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos, en mi compañia nosotros trabajamos bastante con postgres,
desgraciadamente el "guru" de pl/pgsql se fue y yo estoy retomando sus
tareas pedientes, estoy trabajando una aplicacion de prepago y estoy
estancado en la rutina de calculo de tarifa, les doy una intro de como es la
logica de la rutina a ver si me pueden ayudar, ya llevo varios dias en
google y los mailling list 'in english' pero nada, ojala alguien de alguna
luz de como hacerlo, al mismo tiempo es un buen ejemplo para alguien que
quiera hacer un sistema similar, bueno aqui voy:
El sistema es por medio de pines, donde cada pin tiene un plan tarifario
asignado, el plan tarifario maneja el concepto de bandas origen y destinos,
dependiendio de que telefono habla y a que telefono destino esta llamando,
estas bandas no son mas que agrupaciones de los rangos numericos
internacionales asignados a los paises del mundo, de ese modo las tarifas se
aplican con el criterio banda origen - banda destino, el problema radica en
que cada plan puede tener un grupo de bandas asignado que puede diferir
entre un plan y otro, ya que nosotros tenemos presencia en varios paises y
le damos la facilidad a nuestros clientes de hacer roamig entre esos paises,
pero obviamente el precio de la llamada varia de pais en pais donde se
origine la llamada, no es lo mismo hablar de honduras (banda origen
centroamerica) a usa (banda destino usa_canada) que hablar de peru (banda
origen suramerica) a usa (banda destino usa_canada), el esquema basico
contiene la tabla planes que es donde conociemdo un pin se que plan tiene
asignado, bandas que es donde se declaran las bandas que tiene asignado cada
plan y el detalle de bandas que es donde se definen los rangos numericos de
los paises que pertenecen a cada banda, como a veces no se quiere incluir a
un pais en una banda contigua porque se le quiere aplicar una tarifa
diferente el detalle de bandas puede incluir varias entradas para banda, y
es ahi donde no encuentro el algoritmo adecuado para en base al plan
asignado a un pin y el numero origen y destino saber a que banda origen y
destino pertenece cada uno respectivamente:

tabla planes (idplan int,
desc varchar)

idplan | desc
-------+------
15 | voip
19 | tdm

tabla bandas (idplan int,
idbanda int,
banda varchar)

idplan | idbanda | banda
--------+---------+-------
15 | 33 | centroamerica
15 | 34 | suramerica
15 | 35 | usa_canada
19 | 58 | centroamerica
19 | 59 | suramerica

tabla detalle_bandas (idbanda int,
rango_inicio varchar,
rango_fin varchar)

idbanda | rango_inicio | rango_fin
--------+--------------+-------------
33 | 501000000000 | 502999999999
33 | 504000000000 | 507999999999
34 | 510000000000 | 519999999999
34 | 540000000000 | 599999999999
35 | 100000000000 | 199999999999
58 | 501000000000 | 502999999999
58 | 504000000000 | 507999999999
59 | 510000000000 | 519999999999
59 | 540000000000 | 599999999999

Imaginemonos lo siguiente:
1. que estoy llamando con un pin que tiene el plan voip (15), usando el
telefono origen 5042981122 (honduras) y estoy llamando al 18005707088788
(usa),
2. obviamente la banda origen es centroamerica (33)
3. igualmente la banda destino usa_canada (35)

Sabiendo estos tres items yo puedo buscar la tarifa respectiva
(centroamerica - usa_canada) en la tabla de tarifas que no he presentado
aqui.
Algun ejemplo del query para saber 2 y 3 sabiendo de antemano 1?, tablas
temporales y stored procedures son bienvenidos si es necesario, no estoy
pidiendo todo ya cocinado, con un algoritmo en seudo-codigo seria
suficiente, yo me encargo de lo demas.
Perdon por lo extenso pero creo que todo era necesario, si hace falta algun
detalle con gusto puedo profundizar

atte
Miguel Miranda

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Tomas Eroles i Forner 2005-04-21 20:19:37 Re: [Fwd: [usr] Driver de postgres que no va]
Previous Message Alvaro Herrera 2005-04-21 19:34:27 Re: [Fwd: [usr] Driver de postgres que no va]