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

COnsultas multiples a una base de datos MYSql!!

Estas en el tema de COnsultas multiples a una base de datos MYSql!! en el foro de Mysql en Foros del Web. Que tal les planteo mi problema: 1. Tengo una base de datos que podria tener mas de 10000 registros (Diez mil registros). en ella entre ...
  #1 (permalink)  
Antiguo 25/10/2005, 19:42
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
COnsultas multiples a una base de datos MYSql!!

Que tal les planteo mi problema:
1. Tengo una base de datos que podria tener mas de 10000 registros (Diez mil registros).

en ella entre otra informacion tengo un campo denominado FECHA, sucede que para agregar un nuevo registro tiene que ser que la fecha no este repetida es decir que la fecha es unica en cada uno de los 10000 registros (Y hay que tener en cuenta que base de datos podra crecer mucho mas y mucho mas etc)
mi problema es es este:
habia pensado que para ingresar un registro sin que se me repitiera la fecha tenia las siguientes opciones:
1. poner el campo fecha como campo unico (UNIQUE) y luego tratar el error con la funcion "mysql_errno".

...sin embargo y tras mucho pensar me di cuenta que la persona o el usuario podia agregar varias fechas al mismo tiempo (esto lo lograria haciendo que el separara las distintas fechas por comas y luego metiendo la sentencia del INSERT dentro de un cliclo) alcaro que como maximo podria agregar 30 fechas simultaneamente y debido a ello entonces pense en una segunda opcion:

2. Hacer que antes de intentar agregar las fechas haga una consulta a la base de datos por cada fecha que agregue (separada por las comas) comoprobando si esta existe y si existe entonces no agregaria ninguna fecha

NOTA: Si alguna de la sposible treinta fechas agregadas ya existe en la base de datos, entonces no se agrera ninguna de las que el usuario puso.

Preguntas:

en el punto "2" pregunto: es posible hacer una sola consulta preguntando si existe cada una de las 30 fechas?
me explico supongamos que el usuario ingreso treinta fechas separadas por comas, entonces quiero yo que busque cada una de esas 30 fechas en la base de datos con mas de 10000 registros (pero solo utilizando un query para la consultando) en lugar de utilizar 30 querys para la misma consulta (desde luego en un cliclo pero siguen siendo 30 consultas y por ende muchos pines a la base de datos)

Otra de mis preguntas es:
Es mas recomendable hacer las 30 consultas a la base de datos de las que hablo antes o hay una mejor forma de hacer lo que quiero?

UN saludo y muchas gracias
__________________
SEO en Medellin
  #2 (permalink)  
Antiguo 26/10/2005, 08:11
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Alguna sugerencia?

Alguna sugerencia?
__________________
SEO en Medellin
  #3 (permalink)  
Antiguo 26/10/2005, 09:14
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
para lo de la consulta puedes hacerlo con un IN

where fecha IN (fecha1, fecha2, fecha3.....)

pero te recomiendo utilizar transacciones, es decir, la primera opción que comentabas, insertandolas y si se repite error y anular la transaccion, teniendo en cuenta que ésto sólo lo puedes hacer desde la nueva versión 5 de mysql
  #4 (permalink)  
Antiguo 26/10/2005, 11:40
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Las transacciones quedand escartadas

Las transacciones quedan descartadas pues el server solo tiene la 4.xxx

Alguna otra sugerencia amigos del foro?
__________________
SEO en Medellin
  #5 (permalink)  
Antiguo 27/10/2005, 00:27
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Cita:
para lo de la consulta puedes hacerlo con un IN
where fecha IN (fecha1, fecha2, fecha3.....)
Con lo que te dije obtienes si la fecha está entre varios valores al mismo tiempo.
  #6 (permalink)  
Antiguo 02/11/2005, 10:16
Avatar de pocanto  
Fecha de Ingreso: enero-2002
Ubicación: Caracas
Mensajes: 87
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Iniciado por Jose_minglein2
para lo de la consulta puedes hacerlo con un IN

where fecha IN (fecha1, fecha2, fecha3.....)

pero te recomiendo utilizar transacciones, es decir, la primera opción que comentabas, insertandolas y si se repite error y anular la transaccion, teniendo en cuenta que ésto sólo lo puedes hacer desde la nueva versión 5 de mysql
Las transacciones son soportadas por el motor de almacenamiento INNODB el cual viene con cualquiera de las versiones 4.xx.xx por tanto no es necesario tener la version 5 para hacer transacciones. Otra cosa es que tu hosting lo halla deshabilitado.
__________________
"Si estudio, no es por saber más, sino por ignorar menos".
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 14:25.