Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/03/2013, 10:58
drsheldoncooper
 
Fecha de Ingreso: febrero-2013
Mensajes: 26
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: problema con enumeracion repetida

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Acá lo importante es lo que estás diciendo:
Esto implica que la cédula sola no puede ser tomada como argumento discriminante, porque tiene una relación N:N con la misma tabla, y por tanto usarla como referncia única es incorrecto.
El ejercicio se puede hacer, pero sólo usando lo que se conoce como "superclave", que es el conjunto de atributos que puede ser determinante (ver conceptos fundamentales de Normalización), esto es, hay que tomar esa céducla juto con el resto de los atributos, tanto para numerar como para actualizar.

Código MySQL:
Ver original
  1. SELECT  (@rnum := @rnum +1) numf, num, cedula ,nombre,apellidoPat , ApellidoMat
  2. FROM exp JOIN (SELECT @rnum :=0) x
  3. ORDER BY num, cedula ,nombre, apellidoPat , ApellidoMatASC

Código MySQL:
Ver original
  1. UPDATE exp t, temp t2
  2. SET num = numf
  3.     t.num = T2.num
  4.     AND t.cedula = T2.cedula
  5.     AND t.nombre = T2.nombre
  6.     AND t.apellidoPat  = T2. ApellidoPat
  7.     AND t.ApellidoMat = T2.ApellidoMat;


Hay algunas observaciones que tengo que hacerte:
1) No me has respondido lo que te pregunté: ¿Qué representa esa tabla?
2) Tienes que recordar que no en todos los países ciertos conceptos tienen el mismo significado. No sé qué es una "cédula" en México, pero en Argentina es un documento supletorio de identidad de las personas, y como tal es imposible que en un registro de personas haya dos con la misma cédula, porque su numeración es única para cada individuo.
En este sentido, el parentesco entre dos personas no es relevante para la documentación, por lo que no entiendo la relación entre ambas cosas.
3) No tengo ni idea de a qué te refieres con "RFC", porque a mi entender, RFC es "Request For Comment", es decir una referencia de comentarios del [URL="http://es.wikipedia.org/wiki/IEEE"][B]IEEE[/B][/URL], y como tal una documentación de estandarización que se relaciona principalmente con redes... cosa que no creo sea el caso.
La tabla exp es un expediente y es donde se guardan todos los registros que ya los tengo almacenados en ella solo me falta asignarles un numero para su identificacion pero ordenados alfabeticamente mediante la cedula y despues con el apellido.Como te habia mencionado lo intente con un ciclo pero no logre guardarlo en el campo num solo lo mostraba.

La cedula se compone de las dos primeras letras de cada apellido seguido por su fecha de nacimiento, es por eso que se pueden repetir por coincidencias o por ser familiares.Es parecido a un rfc que aquí en México es para registro federal de contribuyentes .

Lo que los va a identificar es este numero "num" que quiero asignarle a cada uno del 1 al 2800 ya ordenados alfabeticamente.Y la tabla "temp" solo la ocupo para crear un campo "numf" y hacer la enumeracion y pasarla al campo num de la tabla "exp".

Ojalá me puedas ayudar o si se puede hacer de otra forma.Te lo agredeceria mucho.Probe lo el script que me proporcionaste pero me hace lo mismo.