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

ID con letra en Mysql???

Estas en el tema de ID con letra en Mysql??? en el foro de Bases de Datos General en Foros del Web. Hola a todos bueno como ya mucho sabemos esto es una tabla para una base de datos que luego en nuestro myphpadmin la importamos a ...
  #1 (permalink)  
Antiguo 12/01/2010, 23:11
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Pregunta ID con letra en Mysql???

Hola a todos bueno como ya mucho sabemos esto es una tabla para una base de datos que luego en nuestro myphpadmin la importamos a nuestra base de datos para hacer registro a travez de un formulario en PHP:

Código:
CREATE TABLE `operador` (
`id` int(11) unsigned NOT NULL auto_increment,
`firstname` varchar(100) default NULL,
`login` varchar(100) NOT NULL default '',
`passwd` varchar(32) NOT NULL default '',
`fecha` date NOT NULL, 
  PRIMARY KEY  (`id`),
  UNIQUE KEY `cedu` (`cedu`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
y también sabemos que cuando utilizamos `id` int(11) unsigned NOT NULL auto_increment, es para que enumere la cantidad de registro que tenemos en nuestra tabla en la base de datos ella autonómicamente nos indica la cantidad de registro comenzando desde 1 (1, 2, 3.... etc) hasta la cantidad de personas que se registre....

por ejemplo:

Código:
+--------------+
ID   | NOMBRE
+--------------+
1. | holaMundo()  |
+--------------+
2. | Hola Mundo!! |
+--------------+

Mi pregunta es: hay alguna forma o algún scritp de que el ID además de numero genere también una letra especifica como (JD1, JD2, JD3.... etc)??, esto es para cuando una persona se registre aparezca asi en la base de datos.

Código:
+--------------+
ID   | NOMBRE
+--------------+
JD1. | holaMundo()  |
+--------------+
JD2. | Hola Mundo!! |
+--------------+
Espero me pueda ayudar o me aconseje alguna forma.

Última edición por expecimen; 12/01/2010 a las 23:16
  #2 (permalink)  
Antiguo 13/01/2010, 02:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ID con letra en Mysql???

Cita:
...que cuando utilizamos `id` int(11) unsigned NOT NULL auto_increment, es para que enumere la cantidad de registro que tenemos en nuestra tabla en la base de datos ella autonómicamente nos indica la cantidad de registro comenzando desde 1 (1, 2, 3.... etc) hasta la cantidad de personas que se registre....

ERROR !!!!!


cuando utilizamos `id` int(11) unsigned NOT NULL auto_increment, es para que IDENTIFIQUE cada registro que tenemos en nuestra tabla en la base de datos ella autonómicamente nos DA UN IDENTIFICADOR UNICO PARA CADA REGISTRO NO indica la cantidad de registros comenzando desde 1 (1, 2, 3.... etc) hasta la cantidad de personas que se registre PUESTO QUE SI POR EJEMPLO SE DAN DE ALTA 10 PERSONAS Y LUEGO LAS PERSONAS QUE SE DIERON DE ALTA EN 1o, 4o Y 5o LUGAR SE DAN DE BAJA TEDREMOS LO SIGUIENTE


+-----------------+
ID | NOMBRE
+-----------------+
2. | Hola Mundo!! |
+-----------------+
3. | Hola Mundo!! |
+-----------------+
6. | Hola Mundo!! |
+-----------------+
7. | Hola Mundo!! |
+-----------------+
8. | Hola Mundo!! |
+-----------------+
9. | Hola Mundo!! |
+-----------------+
10.| Hola Mundo!! |
+-----------------+


Y SI EN ESTE MOMENTO INGRESA UNA NUEVA PERSONA TENDRA COMO IDENTIFICADOR EL 11



+-----------------+
11.| Hola Mundo!! |
+-----------------+


INCLUSO SI ANTES SE HUBIERA DADO DE BAJA LA PERSONA CON EL IDENTIFICADOR 10


En cuanto a tu pregunta, no tinene mucho sentido que te compliques la vida en introducir unas letras en el campo id puedes tenerlas en un campo a parte y mostrarlas junto con el id cuando quieras. Ademas con el ejemplo que nos pones las letras no ayudan a identificar el registro, puesto que se repiten....

Quim
  #3 (permalink)  
Antiguo 13/01/2010, 03:14
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ID con letra en Mysql???

Cita:
Iniciado por quimfv Ver Mensaje

ERROR !!!!!


cuando utilizamos `id` int(11) unsigned NOT NULL auto_increment, es para que IDENTIFIQUE cada registro que tenemos en nuestra tabla en la base de datos ella autonómicamente nos DA UN IDENTIFICADOR UNICO PARA CADA REGISTRO NO indica la cantidad de registros comenzando desde 1 (1, 2, 3.... etc) hasta la cantidad de personas que se registre PUESTO QUE SI POR EJEMPLO SE DAN DE ALTA 10 PERSONAS Y LUEGO LAS PERSONAS QUE SE DIERON DE ALTA EN 1o, 4o Y 5o LUGAR SE DAN DE BAJA TEDREMOS LO SIGUIENTE


+-----------------+
ID | NOMBRE
+-----------------+
2. | Hola Mundo!! |
+-----------------+
3. | Hola Mundo!! |
+-----------------+
6. | Hola Mundo!! |
+-----------------+
7. | Hola Mundo!! |
+-----------------+
8. | Hola Mundo!! |
+-----------------+
9. | Hola Mundo!! |
+-----------------+
10.| Hola Mundo!! |
+-----------------+


Y SI EN ESTE MOMENTO INGRESA UNA NUEVA PERSONA TENDRA COMO IDENTIFICADOR EL 11



+-----------------+
11.| Hola Mundo!! |
+-----------------+


INCLUSO SI ANTES SE HUBIERA DADO DE BAJA LA PERSONA CON EL IDENTIFICADOR 10


En cuanto a tu pregunta, no tinene mucho sentido que te compliques la vida en introducir unas letras en el campo id puedes tenerlas en un campo a parte y mostrarlas junto con el id cuando quieras. Ademas con el ejemplo que nos pones las letras no ayudan a identificar el registro, puesto que se repiten....

Quim
Bueno primero que todo gracias por la grandiosa aclaratoria y segundo no es tanto que me complique o no la vida simplemente lo requiero asi por que asi lo quieren procesar y pues dime como hago para hacer lo que tu dices

Cita:
en el campo id puedes tenerlas en un campo a parte y mostrarlas junto con el id cuando quieras.

Última edición por expecimen; 13/01/2010 a las 03:20
  #4 (permalink)  
Antiguo 13/01/2010, 06:41
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ID con letra en Mysql???

expecimen

Como vez, el campo id para ser auto_increment tiene que ser numerico y ademas debe ser primary key. No puedes tener un auto_increment si no es una llave primaria.

creo que a lo que quimv se refiere es que tengas otro campo con JD o las iniciales que quieras y la concatenes con el id para sacar el codigo.

Te pongo un ejemplo

Código MySQL:
Ver original
  1. mysql> CREATE TABLE `operador` (
  2.     -> `id` int(11) unsigned NOT NULL auto_increment,
  3.     -> `iniciales` varchar(2),
  4.     -> `firstname` varchar(100) default NULL,
  5.     -> `login` varchar(100) NOT NULL default '',
  6.     -> `passwd` varchar(32) NOT NULL default '',
  7.     -> `fecha` date NOT NULL,
  8.     ->   PRIMARY KEY  (`id`)
  9.     -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  10. Query OK, 0 rows affected (0.05 sec)
  11.  
  12. mysql> insert into operador (iniciales,firstname,login,passwd,fecha) values('JD','Daniel','huesos52',md5('huesitos'),now());
  13. Query OK, 1 row affected (0.02 sec)
  14.  
  15. mysql> select *from operador;
  16. +----+-----------+-----------+----------+----------------------------------+------------+
  17. | id | iniciales | firstname | login    | passwd                           | fecha      |
  18. +----+-----------+-----------+----------+----------------------------------+------------+
  19. |  1 | JD        | Daniel    | huesos52 | 2f198ff963b43537e97fba10b4eda178 | 2010-01-13 |
  20. +----+-----------+-----------+----------+----------------------------------+------------+
  21. 1 row in set (0.00 sec)
  22.  
  23. mysql> select concat(iniciales,id) codigo,firstname nombre, login, passwd, fecha from operador;
  24. +--------+--------+----------+----------------------------------+------------+
  25. | codigo | nombre | login    | passwd                           | fecha      |
  26. +--------+--------+----------+----------------------------------+------------+
  27. | JD1    | Daniel | huesos52 | 2f198ff963b43537e97fba10b4eda178 | 2010-01-13 |
  28. +--------+--------+----------+----------------------------------+------------+
  29. 1 row in set (0.00 sec)
  30.  
  31. mysql>

Es esto lo que necesitas?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 13/01/2010, 17:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ID con letra en Mysql???

Exacto a eso me referia...!!!

Quim
  #6 (permalink)  
Antiguo 13/01/2010, 18:38
 
Fecha de Ingreso: octubre-2006
Ubicación: Ciudad Ojeda, Venezuela
Mensajes: 123
Antigüedad: 17 años, 6 meses
Puntos: 0
Respuesta: ID con letra en Mysql???

Cita:
Iniciado por huesos52 Ver Mensaje
expecimen

Como vez, el campo id para ser auto_increment tiene que ser numerico y ademas debe ser primary key. No puedes tener un auto_increment si no es una llave primaria.

creo que a lo que quimv se refiere es que tengas otro campo con JD o las iniciales que quieras y la concatenes con el id para sacar el codigo.

Te pongo un ejemplo

Código MySQL:
Ver original
  1. mysql> CREATE TABLE `operador` (
  2.     -> `id` int(11) unsigned NOT NULL auto_increment,
  3.     -> `iniciales` varchar(2),
  4.     -> `firstname` varchar(100) default NULL,
  5.     -> `login` varchar(100) NOT NULL default '',
  6.     -> `passwd` varchar(32) NOT NULL default '',
  7.     -> `fecha` date NOT NULL,
  8.     ->   PRIMARY KEY  (`id`)
  9.     -> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
  10. Query OK, 0 rows affected (0.05 sec)
  11.  
  12. mysql> insert into operador (iniciales,firstname,login,passwd,fecha) values('JD','Daniel','huesos52',md5('huesitos'),now());
  13. Query OK, 1 row affected (0.02 sec)
  14.  
  15. mysql> select *from operador;
  16. +----+-----------+-----------+----------+----------------------------------+------------+
  17. | id | iniciales | firstname | login    | passwd                           | fecha      |
  18. +----+-----------+-----------+----------+----------------------------------+------------+
  19. |  1 | JD        | Daniel    | huesos52 | 2f198ff963b43537e97fba10b4eda178 | 2010-01-13 |
  20. +----+-----------+-----------+----------+----------------------------------+------------+
  21. 1 row in set (0.00 sec)
  22.  
  23. mysql> select concat(iniciales,id) codigo,firstname nombre, login, passwd, fecha from operador;
  24. +--------+--------+----------+----------------------------------+------------+
  25. | codigo | nombre | login    | passwd                           | fecha      |
  26. +--------+--------+----------+----------------------------------+------------+
  27. | JD1    | Daniel | huesos52 | 2f198ff963b43537e97fba10b4eda178 | 2010-01-13 |
  28. +--------+--------+----------+----------------------------------+------------+
  29. 1 row in set (0.00 sec)
  30.  
  31. mysql>

Es esto lo que necesitas?

Hola gracias por ayuda y sobre todo por la aclaratoria pense que el ID se podia modificar con numero y letras pero ahora que lo indica Hueso 52 solo puede procesar numero y como indico quimfv hay que ingresar otro campo, es que queria procesar esto por que les explico aquí se va ha realizar una jornadas de registro de vehiculos anteriormente lo hacian a manos pero ahora quieren guardarlo en una base de datos entonces esto se van a realizar en sitios en donde no hay internet y hay que hacerlo mediante un localhost pero son en diferentes parte y quiero hacer esto por que cuando valla a vaciar todo en una tabla unica los numeros no choquen.. no se si me voy a entender o pueden darme algún consejo
  #7 (permalink)  
Antiguo 14/01/2010, 01:54
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ID con letra en Mysql???

Esta bien pensado.

El sistema mas sofisticdo seria trabajar con replicas de la base de datos, pero desconozco como funciona.

La tabla destino de todos los datos tendras que definirla con un identificador propio, me explico:

si haces


TablaFinal

id int(11) unsigned NOT NULL auto_increment PK
local VARCHAR(2) NOT NULL
...

perderàs el id original.



TablaFinal

id int(11) unsigned NOT NULL auto_increment PK
id_parcial int(11) unsigned NOT NULL
local VARCHAR(2) NOT NULL
...

En id_parcial tendras que guardar los valores del id de las tablas parciales y en local las siglas, mientra que id será la clave principal.


Quim
  #8 (permalink)  
Antiguo 14/01/2010, 05:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ID con letra en Mysql???

Yo la verdad, preferiría jugar con altos rangos de datos y asignar un gran espacio a la codificación de diferentes puntos.

Me explico:
configurar la base de datos central y la llave primaria como bigint.
El primer nodo de trabajo asignarle el auto_increment = 1.
El segundo nodo de trabajo comenzarlo en auto_increment=1'000.000
El tercero en 2'000.000 Etc etc.

Si crees que el rango es pequeño, puedes aumentarlo, o disminuirlo si es exagerado. De esta forma tenemos un único primary key sin el riesgo de que choquen en la base de datos central los registros entrantes de los nodos.

saludos expecimen y quimv
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: letra, mysql
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:50.