Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jegggf en 18 de Junio 2014, 23:20
-
hola, tengo el siguiente problema, tengo que ingresar un valore de forma que sea secuencial en en una columna mysql, la misma no es ni PK ni AI, por lo cual estoy tratando de hacerlo con algun bucle for o while sin resultado, hacer autoincrement en una columna que no lo es.
-
Puedes hacer una consulta para extraer el valor más grande en esa columna (que será el último) y seguidamente insertar el valor obtenido más uno, de esa forma te funcionaría como incremental.
Obtener el máximo en la columna sería:
select id, max(nombreColumna)
from nombreTabla
group by id
Aquí tienes ejemplos de max
http://dev.mysql.com/doc/refman/5.0/es/example-maximum-row.html
Saludos
-
gracias por tu respuesta, el valor que voy a insertar ya lo tengo. El minmo es mayor que todo los que ya estan en la columna, a partir de este valor tengo que generar una secuencia y al final de esta el valor ingresado sera el menor de la columna.
fila 1
fila 2
fila 3
fila 4
valor a ingresar 5
quedaria asi
fila 5
fila 6
fila 7
fila 8
-
he leido http://dev.mysql.com/doc/refman/5.0/es/example-maximum-row.html pero no es lo que busco.
-
Por lo que te he entendido entonces debes hacerlo con un bucle y usando UPDATE para reemplazar el valor que tienes por el nuevo.
Suponiendo que lo que tienes en la columna son valores numéricos y con datos de ejemplo:
$minimoActual sería el valor que tienes mínimo actualmente en la tabla, por ejemplo 1
$maximoActual sería el valor que tienes máximo actualmente en la tabla, por ejemplo 4
$minimoNuevo sería el valor que tiene que reemplazar al mínimo actual, por ejemplo 5
El incremento para todos los índices es $incremento = $minimoNuevo - $minimoActual, en este ejemplo 5 - 1 = 4
Todos los valores tienes entonces que incrementarlos en 4
$link = mysql_connect("sql203.byethost7.com", "b7_10356956", "*****");
mysql_select_db("b7_10356956_mibasededatos", $link);
for ($numero = minimoActual; $numero <= maximoActual; $numero++){
mysql_query("UPDATE `nombreTabla` SET `nombreColumna`= ($numero+$incremento) WHERE `valorColumna`= $numero", $link);
}
mysql_close($link); // Cerramos la conexion con la base de datos
La sintaxis no es exactamente así, habría que probarla.