Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: jegggf en 18 de Junio 2014, 23:20

Título: php, mysql ingreso
Publicado 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.
Título: Re:php, mysql ingreso
Publicado por: Ogramar en 19 de Junio 2014, 18:07
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
Título: Re:php, mysql ingreso
Publicado por: jegggf en 19 de Junio 2014, 18:24
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
Título: Re:php, mysql ingreso
Publicado por: jegggf en 19 de Junio 2014, 18:41
he leido http://dev.mysql.com/doc/refman/5.0/es/example-maximum-row.html pero no es lo que busco.
Título: Re:php, mysql ingreso
Publicado por: Ogramar en 20 de Junio 2014, 08:43
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.