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

Autogenerar id

Estas en el tema de Autogenerar id en el foro de Mysql en Foros del Web. hola, necesito ayuda con el siguiente codigo: Código PHP: DELIMITER  $$ DROP PROCEDURE  IF  EXISTS  ` bdcpago `.` insertar_alumno `$$ CREATE DEFINER =` root `@` localhost `  ...
  #1 (permalink)  
Antiguo 13/08/2010, 14:39
 
Fecha de Ingreso: mayo-2010
Mensajes: 4
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Autogenerar id

hola, necesito ayuda con el siguiente codigo:

Código PHP:
DELIMITER $$

DROP PROCEDURE IF EXISTS `bdcpago`.`insertar_alumno`$$

CREATE DEFINER=`root`@`localhostPROCEDURE `insertar_alumno`(nom varchar(20), apat varchar(20),
 
amat varchar(20), cg char(2), domi varchar(45), email varchar(45), tel char(15), fnac datecodben char(2))

   
BEGIN

    
declare p char(2);
    declare 
id char(5);
        
    
select count(codgradointo p from alumno where codgrado=cg;
        
    
set id=(select concat(p,right(('00',p+1),3)));

    
insert into alumno values(id,nom,apat,amat,cgdomi,email,tel,fnac,codben);

    
END$$

DELIMITER 
El código es para ingresar datos en la tabla alumno:

Código PHP:
CREATE TABLE `alumno` (
  `
codaluchar(6COLLATE latin1_general_ci NOT NULL,
  `
nombrevarchar(20COLLATE latin1_general_ci DEFAULT NULL,
  `
apatvarchar(20COLLATE latin1_general_ci DEFAULT NULL,
  `
amatvarchar(20COLLATE latin1_general_ci DEFAULT NULL,
  `
codgradochar(2COLLATE latin1_general_ci DEFAULT NULL,
  `
domiciliovarchar(45COLLATE latin1_general_ci DEFAULT NULL,
  `
emailvarchar(45COLLATE latin1_general_ci DEFAULT NULL,
  `
telefchar(15COLLATE latin1_general_ci DEFAULT NULL,
  `
fechanacdate DEFAULT NULL,
  `
codbenchar(2COLLATE latin1_general_ci DEFAULT NULL,
  
PRIMARY KEY (`codalu`)


Mi problema es que quiero autogenerar el codalu(codigo del alumno) a partir de la cantidad de alumnos por aula y nivel. Todo eso lo cuento por codgrado:

- codgrado - | - grado -- | -- nivel
01 ------- | --- 1 ---- | ---- 1 ----
02 ------- | --- 2 ---- | ---- 1 ----
03 ------- | --- 3 ---- | ---- 1 ----
10 ------- | --- 4 ---- | ---- 2 ----
11 ------- | --- 5 ---- | ---- 2 ----

yo ingreso el codgrado y debe arrojar el codigo asi:

codgrado: 11 o sea grado: 5 nivel: 2 (2=secundaria) ejemplo de codigo 52001
grado: 4 nivel: 1 (1=primaria) ejemplo de codigo 41001

y el codigo debe incrementar a medida que van ingresando alumnos, otro de los problemas es que cuando llega el 52009 y quiero ingresar el 52010 tambien sale un error. o por ejemplo cuando el codgrado es null, tambien sale un error, espero me puedan ayudar.


por ahora la consulta me arroja el siguiente error:

Código PHP:
Error Code 1241
Operand should contain 1 column
(s)
(
0 ms taken
  #2 (permalink)  
Antiguo 13/08/2010, 16:14
 
Fecha de Ingreso: mayo-2010
Mensajes: 4
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Respuesta: Autogenerar id

Segui programando y logre el codigo de autogenerar. Pero ahora estoy estancado en el codigo para el caso de que no exista el codalu lo cree.

espero me puedan ayudar

Código:
DELIMITER $$

DROP PROCEDURE IF EXISTS `bdcpago`.`insertar_alumno`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `insertar_alumno`(nom varchar(20), apat varchar(20),
 amat varchar(20), cg char(2), domi varchar(45), email varchar(45), tel char(15), fnac date, codben char(2))

   BEGIN
	declare n char(2);
	declare p char(5);
	
	set n=(select codgrado from alumno where codgrado=cg);
	set p=(select concat(n,right(concat('000',count(n)+1),3))n);
	
	if codalu not exists then
	begin
	   set p=(select concat(n,'001'));
	end;
	end if;

	insert into alumno 
	values(p,nom,apat,amat,cg, domi,email,tel,fnac,codben);

    END$$

DELIMITER ;

Etiquetas: Ninguno
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




La zona horaria es GMT -6. Ahora son las 07:10.