RE: Como crear codigos compuestos

From: Gabriel Hermes Colina Zambra <hermeszambra(at)yahoo(dot)com>
To: MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe>, "'pgsql-es-ayuda(at)postgresql(dot)org'" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Como crear codigos compuestos
Date: 2007-08-18 19:56:12
Message-ID: 502399.21585.qm@web63707.mail.re1.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


--- MIGUEL CANCHAS <mcanchas(at)tsr(dot)com(dot)pe> escribió:

> Ante todo gracias por las sugerencias.
>
> Explico :
> Los codigos compuestos son para poder asociar
> rapidamente al cliente, si por
> ejemplo:
>
> A006 me dice que el cliente empieza con A, y es
> Antonio meza cuadra,
>
> cuando buscan hacen referencia al A006, o dicen "
> Ah!! ese cliente es A006"
> o Antonio Meza Cuadra que cliente es ? es A006.
Te voy a dar una solucion muy valida, y probada,
funciona, pero para un caso que me deja muchas
interrogantes.

?????? Y como intercalaz entre tantos perez a un
perdomo en una guia telefonica, aca en mi pais esa
solucion seria fatal y eso que solo somos 3000000 de
habitantes, no justifiques una reverenda bobada, por
que te deja mal parado.

Igual con todo elabore esto.

Primero cree la tabla letracodigo

codigo varchar(4);
apellidos varchar(25);
nombres varchar(25);

select * from letracodigo me da esto;

codigo apellidos nombres
A001 ALANIS GERARDO
A002 AMESTEGUI PABLO
B001 BUENO ALEJANDRO
D001 DUARTE MANUEL
D002 DOMINGUEZ LAURA
P001 PEREZ GASTON
P002 PEREZ ANA
P003 PEREZ JUAN
P004 PERDOMO TOTO
P005 PERDOMO LEANDRO
P006 PEREZ ROJELIO

Y con esta consulta obtengo el ultimo valor que tiene
cada letra + 1

select substr(codigo,1,1) as
letra,max(substr(codigo,2,3))::integer + 1 as numero
from letracodigo
group by substr(codigo,1,1)

LETRA NUMERO
A 3
B 2
D 3
P 7

Bueno ahora el resto del trabajo te toca a ti.

Yo haria una funcion que pasando la letra me arroje el
codigo, uniendo la letra + el codigo con el formato en
00x, y si no la encuentra devuelva C001 con el valor
uno por defecto.

Puede que parezca una solucion fea, pero funciona bien
y es fea por que el origen conceptual de codificacion
es espantoso.

>
> Si lo pusiera correlativo diria que es el cliente
> "6",
>
> Gracias a todos .
>
> Solo manejamos clientes con este tipo de
> nomenclatura al igual en las rutas
> "T01", "T25"
Bueno la verdad que no tiene nada que ver una cosa con
otra.

> Miguel
>

Miguel espero que te sirva y un saludo solidario desde
Uruguay a ese pueblo hermano en estas horas.

Atte.
Gabriel Hermes Colina Zambra

> -----Mensaje original-----
> De: Julio Rivero [mailto:jcrmlima(at)gmail(dot)com]
> Enviado el: Sábado, 18 de Agosto de 2007 11:57 a.m.
> Para: Arturo Munive [pgsql-es-ayuda]
> CC: MIGUEL CANCHAS; pgsql-es-ayuda(at)postgresql(dot)org
> Asunto: Re: [pgsql-es-ayuda] Como crear codigos
> compuestos
>
>
> Ah!, claro, tienes que bloquear la tabla, ahora,
> porque la necesidad de
> códigos compuestos?, no puedes utilizar secuencias y
> te ahorras un huevo de
> cosas????
>
>
> On 8/18/07, Arturo Munive [pgsql-es-ayuda] <
> arturomunive(at)gmail(dot)com
> <mailto:arturomunive(at)gmail(dot)com> > wrote:
>
> Julio Rivero escribió:
> > Te falto: "Por favor"
> >
> > Puedes hacer un algoritmo que te extraiga la
> primera letra (obviamente
> > en una variable) de lo que estas ingresando o
> capturando, puedes
> > utilizar substr para obtener el primer caracter,
> luego hacer un select
> > a tu tabla con una condición, trayendo el último
> registro, algo así como:
> >
> > Select count(*)
> > From tabla
> > Where substr(campo,1,1) =
> 'primera_letra_extraida';
> >
> > Luego le sumas 1 y lo concatenas:
> > primera_letra_extraida||correlativo::text
> Bloquea las tablas para que no se repita el codigo
> (mmm opinion personal
> no me gusta ese tipo de codigos)
>
> --
> __ ___ _____ _ ___ ___ _ _ _
> _ _ ____
> / /\ | |_) | | | | | | |_) / / \ | |\/| | | | |
> |\ | | | \ \ / | |_
> /_/--\ |_| \ |_| \_\_/ |_| \ \_\_/ |_| | \_\_/
> |_| \| |_| \_\/ |_|__
>
>
>
>
>
>
> --
> Saludos
> Att,
> JR
> Movil: 98055573
>
>

__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
Regístrate ya - http://correo.espanol.yahoo.com/

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gabriel Hermes Colina Zambra 2007-08-18 20:08:02 Re: Sobre consulta en Postgres
Previous Message Rolando Toledo Fernandez 2007-08-18 18:38:25 RE: Sobre consulta en Postgres