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

Duda inserción en una tabla

Estas en el tema de Duda inserción en una tabla en el foro de Mysql en Foros del Web. Hola foro Estoy implementando una tienda virtual, en la cual habrá una serie de artículos (identificados en una tabla de la BD por id_articulo) y ...
  #1 (permalink)  
Antiguo 22/04/2008, 08:24
 
Fecha de Ingreso: abril-2007
Mensajes: 43
Antigüedad: 17 años
Puntos: 0
Duda inserción en una tabla

Hola foro
Estoy implementando una tienda virtual, en la cual habrá una serie de artículos (identificados en una tabla de la BD por id_articulo) y sobre los cuales se podrán realizar comentarios que se almacenarán en una tabla identificada por id_articulo e id_comentario. El id_comentario quiero que sea un número entero que se autoincremente en función del número de comentario realizado por artículo, es decir,
Si tenemos el artículo 'a' y sus comentarios 1,2,3 y el articulo 'b' y sus comentarios 1,2, si el usuario hace un nuevo comentario a 'a' este tomaría el id_Articulo='a' y el id_comentario='4', mientras que si lo hace a 'b' tomaría el id_articulo='b' y el id_comentario sería 3.

¿Como puedo implementar un procedimiento en mysql para que se encargue de autoasignarme el id_comentario?, ya que si lo hago con autoincremento me contará el número total de comentarios para todos los artículos y no hará el auto incremento en función del id_articulo, ¿o sería diferente?

Muchas gracias y un saludo
Javier
  #2 (permalink)  
Antiguo 22/04/2008, 09:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Duda inserción en una tabla

Tu suposicion de como funcionaria con autoinc es correcta.

Lo que pasa es que hacerlo como dices te obligara a consultar el id del ultimo comentario introducido previo a insertar el nuevo, mas consultas a la bbdd.

Si usas un autoinc esto se ara automaticamente y el hecho de que el id no sea consecutivo no te impide nada...

Es decir si quieres todos los comentarios de un producto podras listarlos por orden de insercion igual que si estuvieran numerados de 1 a n, si quieres el último pues max(id) igual que de 1 a n, si quieres listar todos los productos con sus comentarios agrupados por producto y por orden de insercion ORDER BY id_producto, id_comentario, si quieres saber cuantos hay por producto Count(*) group by id_producto...

Si quieres numerarlos en el momento de mostrarlos en el web o interficie que sea puedes hacerlo mostrando el numerador del bucle que los trae de la base de datos y luego te quedara 1,2,3... independientemente del id que tengan...

Uf... no se si te habre convencido... aveces es mejor no complicarse la vida...

Si apesar de tamaña explicación quieres hacerlo pues es facil

Primero:

select max(id_comentario) from comentarios where id_producto=XX

guardas el valor en una variable (variableNuevoId), lo incrementas en 1

Segundo:

insert into comentarios (id_producto,id_comentario,comentario) values (XX, variableNuevoId, "Texto del comentario")

no se si con procediminetos almacenados o tigers se podria hacer desdel propio motor de la base de datos pero basicamente haran lo mismo...

----Corrección ------

He releido tu post y quizas lo que preguentabas es esta ultima parte (procediminetos almacenados o tigers) y ya sabias como hacerlo con consultas independientes, en cualquier caso la argumentació es igualmente valida.

--------------------------

Quim

Última edición por quimfv; 22/04/2008 a las 09:48
  #3 (permalink)  
Antiguo 22/04/2008, 09:40
 
Fecha de Ingreso: abril-2007
Mensajes: 43
Antigüedad: 17 años
Puntos: 0
Re: Duda inserción en una tabla

Gracias por contestar, la cosa es que había pensado hacerlo así pero me surge la duda de hata cuantos auto increment, me permitiría, es decir, si se almacena en un int llegaria un momento que se produciría desbordamiento, ¿no? o esto solo no ocurriría en mysql?

Gracias de nuevo y un saludo.

Javier
  #4 (permalink)  
Antiguo 22/04/2008, 11:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Re: Duda inserción en una tabla

He pasado un autoinc de integer a double y no se ha quejado... diria que funciona igual.... no estoy seguro.

En qualquier caso no sera solo mysql el que tenga problemas de desbordamiento puesto que depende del tipo de datos que se use no del motor...

Quim
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 13:51.