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

AVANZADO >>> Alguien sabria como hacer esto?

Estas en el tema de AVANZADO >>> Alguien sabria como hacer esto? en el foro de Bases de Datos General en Foros del Web. A ver, el planteamiento es el siguiente: Como la mayoria sabreis para elegir los 100 primeros registros de una tabla de 10.000 con hacer un ...
  #1 (permalink)  
Antiguo 30/04/2002, 08:27
 
Fecha de Ingreso: abril-2001
Mensajes: 20
Antigüedad: 23 años, 1 mes
Puntos: 0
AVANZADO >>> Alguien sabria como hacer esto?

A ver, el planteamiento es el siguiente:

Como la mayoria sabreis para elegir los 100 primeros registros de una tabla de 10.000 con hacer un SELECT TOP 100 * ... es suficiente, con este tipo de consulta, podemos almacenar los primeros 100 registros en un recordset.

Pues bien, como hariais lo siguiente: Tenemos una tabla de 100.000 registros en una base de datos, de estos 100.000 registros hemos de seleccionar del 50.000 al 50.100, por ejemplo, alguien sabe de alguna consulta directa en SQL que pueda hacer esto, al estilo SELECT TOP?

Actualmente solo se me ocurre una cosa, haciendolo sin SQL, es decir, se me ocurre coger los 51.000 primeros con un SELECT TOP 51000 y una vez devuelta la consulta a un recordset, hacer un RS.MOVE 50.000 con lo cual tenemos al puntero apuntando al 50.001 y ya podemos hacer la lectura de los cien registros que necesitamos...

Esto es lo más optimo que he encontrado, pero no creo que los grandes buscadores utilicen este tipo de consultas, más bien creo que debe haber algún tipo de consulta más experta...

Por favor, ayudarme!!!

http://www.granh.com

  #2 (permalink)  
Antiguo 30/04/2002, 08:36
Avatar de eloi  
Fecha de Ingreso: marzo-2002
Mensajes: 149
Antigüedad: 22 años, 1 mes
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

Para MySQL es LIMIT 50.000 , 100

50.000 -> Empezar en la 50.000
100 -> cojer 100 resultados

<hr size="1"><font face="Verdana">[B]¿Buscas algun código?<br><input id="q"> <input type="submit" value="Buscar" onclick="document.location = &quot;http://www.webpersonal.net/elosan/indicecods.htm?info=enter,todos,&quot;+q.value+&qu ot;,0&quot;">
  #3 (permalink)  
Antiguo 30/04/2002, 12:33
 
Fecha de Ingreso: abril-2001
Mensajes: 20
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

Me interesaria una sentencia SQL no un metodo de MySQL, es decir, algo estandar, actualmente lo necesito para atacar a un SQL SERVER pero en un futuro quizá se migre la aplicación a ORACLE, con lo cual tiene que ser algo estandar, y creo que tu lo que comentas es una funcion al estilo RS.MOVE...

Si me equivoco y realmente es una sentencia de SQL puro y duro, primero pedir perdón, y seguro, me puedes confirmar si funcionaria en un SQL SERVER o en un ORACLE?

Gracias!
  #4 (permalink)  
Antiguo 05/05/2002, 09:37
 
Fecha de Ingreso: abril-2001
Mensajes: 20
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

De verdad que nadie sabe como resolver esta duda???
  #5 (permalink)  
Antiguo 05/05/2002, 22:37
 
Fecha de Ingreso: diciembre-2001
Mensajes: 199
Antigüedad: 22 años, 4 meses
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

no se si es a esto a lo que te refieres...
pero bueno ahi te va.. esta consulta devuelve los sueldos entre 200000 y 300000

select apellido, sueldo from empleados where sueldo between 200000 and 300000

between se usa para un intervalo de valores espero que te sirva
salu2
  #6 (permalink)  
Antiguo 07/05/2002, 15:16
 
Fecha de Ingreso: abril-2001
Mensajes: 20
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

Te lo agradezco mucho, pero es bastante más complicado lo que estoy buscando...

Para explicartelo bien, el tema es que tengo un buscador, y este empieza a hacerse bastante grande y a la hora de devolver busquedas hay veces que devuelve cientos, entonces yo lo que quiero es no volcar en el recordset toda la respuesta de la base de datos...

tan solo quiero volcar una parte y eso es facil de hacer con un top, pero solo funciona para los primeros registros, top 100 devuelve cien registros, etc...

pero si quiero devolver los 100 registros que van del 101 al 200 pues la cosa como que no se puede hacer, independientemente de hacer ninguna comprobacion con ningun campo que es lo que me propones tu con el BETWEEN.

pues eso, que sigo sin encontrar la solución, que creo que sencillamente no existe esta función, pero yo sigo pidiendo la ayuda de algún expertisimo en el tema a ver si alguien se anima!!!

:P ;)
  #7 (permalink)  
Antiguo 07/05/2002, 16:29
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: AVANZADO >>> Alguien sabria como hacer esto?

Mira, no seré un genio, pero haciendo una sola consulta en Google, me salió este link que me parece que es lo que necesitas:

<a href='ir.asp?http://www.orafaq.com/faqsql.htm#ROWXtoY' target='_blank'>http://www.orafaq.com/faqsql.htm#ROWXtoY...</a>

A ver si buscamos un poco más antes de hacer las preguntas.

saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #8 (permalink)  
Antiguo 17/05/2002, 04:07
 
Fecha de Ingreso: abril-2001
Mensajes: 20
Antigüedad: 23 años, 1 mes
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

Muchas gracias webstudio, pero la verdad es que me parece que no has entendido muy bien el concepto de esta duda...

No se trata de coger las x columnas que quieras pasandole un parametro, la verdad es que si google me hubiera solucionado las cosas tan facilmente no me hubiera molestado en escribir aquí.

Sigo esperando alguna mente privilegiada, porque ya he preguntado a varios conocidos muy entendidos en el mundo de las bases de datos y todos coinciden en decir que no hay niguna forma de hacerlo.

Por favoooorrrrrr, hay alguien al otro lado??? jejeje!!! ;)
  #9 (permalink)  
Antiguo 17/05/2002, 06:32
 
Fecha de Ingreso: abril-2002
Mensajes: 161
Antigüedad: 22 años
Puntos: 0
Re: AVANZADO >>> Alguien sabria como hacer esto?

¿por qué no haces uso del &quot;rowid&quot;?
  #10 (permalink)  
Antiguo 17/05/2002, 08:40
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Re: AVANZADO >>> Alguien sabria como hacer esto?

Disculpa, pero en lo poco que entiendo de Bases de Datos, la solución que te acerqué, sirve para pedir desde una FILA X hasta una FILA Y, que es lo que estabas buscando, nadie habló de columnas.

Pero bueno, allá tú, si crees que no es la respuesta.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #11 (permalink)  
Antiguo 17/05/2002, 12:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: AVANZADO >>> Alguien sabria como hacer esto?

Yo no entiendo mucho de SQL standard.. pero

Lo poco y nada que se .. es que cada motor de base de datos tiene sus variantes con respecto al SQL standar usado ...

Mysql por ejemplo incorpora el metodo que ya te han comentado LIMIT x,y que no hace mas que seleccionar x FILAS entre el puntero x y con desplazamiento y ...

SQL server tendra su propio metodo tal vez .. seria cosa de leerse el manual de SQL server o irse al SQL standard ISO nºtal

De todas formas .. me he dado una vuelta por google.com y he encontrado varias webs tratando el tema que comenta este topic.
Aqui por ejemplo, se discuten varias formas de atacar el problema. Se dan soluciones y sus pros y contras.
<a href='ir.asp?http://www.tsqlsolutions.com/Articles/Index.cfm?ArticleID=16191' target='_blank'>http://www.tsqlsolutions.com/Articles/In...</a>

Aqui hablan de otra tecnica? T-SQL .. que tal vez te pueda interesar:
<a href='ir.asp?http://www.tsqlsolutions.com/Articles/Index.cfm?ArticleID=19663' target='_blank'>http://www.tsqlsolutions.com/Articles/In...</a>

En definitiva ... YO no se SQL avanzado .. pero se usar un buscador :P

Un saludo,
  #12 (permalink)  
Antiguo 17/05/2002, 12:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Re: AVANZADO >>> Alguien sabria como hacer esto?

Sobre los links q puse antes:

Aqui he extraido algunas porciones del texto de los links mencionados ..

Cita:
ANSI SQL contains no options that assume a particular physical data layout that can determine which rows to return.
Segun dicen aqui .. ANSI SQL no soporta funciones para determinar cuantas FIlAS devuelve una consulta ..

Y bueno .. si lo lees detenidamente veras que ANSI SQL (el cual lo soportan todos los motores de Base de datos basados en SQL ..) no dispone de funciones para lo q comentas ..

En ese articulo se proponen alternativas para simular esa funcion propia de los motores de base de datos indivuales (LIMIT de mysql .. rwind o como sea de Oracle ..etc). Eso si .. segun dicen ahi mismo y pienso yo .. la mejor alternativa para obtener maximo rendimiento en tus consultas es usar las funciones (y metodos) de cada Base de datos .. en detrimento de la compatibilidad en el SQL ..

Un saludo,

pd: quedo claro ahora? .. o siguimos sin acertar o entender lo que quieres hacer?
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 00:26.