| 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: | Whole Thread | Raw Message | 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/ 
| 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 |