Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

llaves compuestas

Estas en el tema de llaves compuestas en el foro de Mysql en Foros del Web. ..hola.. se me presento lo siguiente .. tengo una tabla departamento con el codigo de 2 digitos.. 00 .. "definidas ya en la base de ...
  #1 (permalink)  
Antiguo 15/01/2010, 15:56
 
Fecha de Ingreso: noviembre-2009
Ubicación: Barranquilla
Mensajes: 54
Antigüedad: 14 años, 5 meses
Puntos: 0
llaves compuestas

..hola..
se me presento lo siguiente
..
tengo una tabla departamento con el codigo de 2 digitos.. 00 .. "definidas ya en la base de datos"
y una tabla municipio con el codigo de 5 digitos.. 00.000 .. incluidos por el usuario.. definidos de la siguiente forma..

00.000 = 00(departamento)+000(consecutivo)
pues quiero hacer esto..

01-002
01 = atlantico
002 = consecutivo

puede existir otro codigo..

02-077
02 = cundinamarca
077 = consecutivo..

pero ojo.. tambien se puede presentar lo siguiente..

01-077
01 = atlantico
077 = consecutivo

..

gracias..
alguien me podria ayudar.. lo he pensado y pensado.. pero no logro resolverlo :S

..
  #2 (permalink)  
Antiguo 15/01/2010, 16:10
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: llaves compuestas

Hola, podrias poner la estructura de tus tablas para aclarme un poco y talvez poder ayudarte.
  #3 (permalink)  
Antiguo 15/01/2010, 16:15
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: llaves compuestas

no veo por ningun lugar de tu post cual es tu pregunta o problema???

que te hagan el codigo o que????

te comento que por lo normal, los codigos se deberian manejar asi:
01001
02002
01003
01004
02005

es decir, el numero consecutivo sigue aumentando asi se repita el departamento y no como tu haces que incrementas solo para el determiando departamento.

no obstante, para tu caso si en verdad lo deseas asi... primero deberias obtener el valor maximo dependiendo del departamento, con eso ya tienes el maximo correspondiente y le incrementas uno.

lo otro (normal) seria siempre incrementar en uno al maximo consecutivo....... todo esto teniendo en cuenta que antes debes separar el codigo el departamento y el consecutivo.

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 15/01/2010, 17:16
 
Fecha de Ingreso: noviembre-2009
Ubicación: Barranquilla
Mensajes: 54
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: llaves compuestas

.. vale.. tienes razon masterojitos.. no hice mi pregunta..
aclaro un poco..
tengo la tabla departamento..
DEPARTAMENTO
#CODIGO_DPTO
NOMBRE_DPTO

MUNICIPIO
#CODIGO_MUNICIPIO
NOMBRE_MUNICIPIO
#CODIGO_DPTO

..
.. y pues quiero que sea como lo dije anteriormente..

pd: esto lo pregunto por que en mi universidad se da..
esta la carrera ingenieria de sistemas con el codigo 19...
y yo como estudiante de ella tengo el codigo 0052-.
y existe la carrera de contaduria con el codigo 18.,.
entonces cualquier alumno de esa carrera tambien puede tener el codigo 0052..
190052..
180052.. son diferentes.. !..
  #5 (permalink)  
Antiguo 15/01/2010, 18:11
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: llaves compuestas

ps ya te mencione.........
primero obtienes el maximo codigo dependiendo del departamento.
luego separas el codigo del departamento con el consecutivo....
le aumentas 1.
y listo no?.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #6 (permalink)  
Antiguo 19/01/2010, 14:04
 
Fecha de Ingreso: noviembre-2009
Ubicación: Barranquilla
Mensajes: 54
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: llaves compuestas

.. gracias masterojitos.. ..
.. aqui dejo el codigo de mi consulta..
tus pautas fueron muy certeras..

Código PHP:
Ver original
  1. $search = mysql_query("SELECT IFNULL(max_cod_cut,0) FROM (select right(max_cod, 3) AS max_cod_cut from (SELECT max(codigo_municipio) AS max_cod FROM gerson_cvl.municipio where codigo_dpto = '".$codigo_dpto."') as municipio) as mun");
  2.   $valor_max = mysql_result($search,0);
  3.  
  4.   $int_codigo_municipio = ((int)$valor_max)+1;
  5.   $int_codigo_municipio = (string)$int_codigo_municipio;
  6.  
  7.  /* print str_pad($int_codigo_municipio, 3, "000", STR_PAD_LEFT);*/
  8. // pude usar esta .. pero me funciono lo siguiente
  9.  
  10.         if($int_codigo_municipio < 10){
  11.            $int_codigo_municipio = (string)("00".$int_codigo_municipio);
  12.         }else if($int_codigo_municipio < 100){
  13.             $int_codigo_municipio =  (string)("0".$int_codigo_municipio);
  14.         }
  15.   $new_codigo_municipio = $codigo_dpto.$int_codigo_municipio;

he cambiado mis campos en la base de datos
las llaves primarias son varchar .. para que me tome los 00x iniciales..

.. gracias .. mil gracias..

(solucionado)

Etiquetas: llaves
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:20.