Que LIMIT arroje la mitad de resultados

Iniciado por Lupin, 27 Agosto 2014, 19:34 PM

0 Miembros y 1 Visitante están viendo este tema.

Lupin

Hola a todos les queria preguntar como hacer que la sentencia limit me muestre la mitad de los registros, en una sentencia mysql (sin usar calculos en php) :huh:

MinusFour

Lo que puedes hacer son dos consultas MySQL, una que te devuelva el numero de registros de la tabla:

Código (sql) [Seleccionar]

SELECT COUNT(*) FROM tabla


Y luego hacer el limit:

Código (sql) [Seleccionar]

SELECT * FROM tabla LIMIT count/2

Lupin

Gracias amigo , peor no habra forma de hacerlo en una sola sentencia tengo que entendido que en SQL si existe esa opcion

dimitrix

Prueba a ver con una sub consulta:

Código (sql) [Seleccionar]
SELECT * FROM tabla LIMIT (SELECT COUNT(*) FROM tabla)/2

Si funciona mi duda sería... ¿Y si el resto no es 0?.... ¿Explota el servidor? ¿Matrix desaparece?




Lupin


engel lex

que tal si intentamos buscarle otra aproximación al problema...

¿para qué necesitas que sea la mitad, por que no un numero fijo?
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Lupin

Citarque tal si intentamos buscarle otra aproximación al problema...

¿para qué necesitas que sea la mitad, por que no un numero fijo?
Gracias por tu interes en realidad no solo es la mitad, sino la tercera parte, cuarta parte... es decir que sea personalisable de acuerdo a una variable.
Es un examen tipo repaso

Por ejemplo tengo x preguntas de varios cursos
(el numero de preguntas aumenta progresivamente)

En el primer repaso se toma el 100% de la preguntas
En el segundo repaso se toma el 75% de la preguntas
En el tercero repaso se toma el 50% de la preguntas

Todas la preguntas son extraidas aleatoriamente.
Es decir necesito extraer un pocercentaje de las preguntas los mas aleatoriamente posible

engel lex

cuando haces

Código (sql) [Seleccionar]
SELECT * FROM tabla LIMIT (SELECT COUNT(*) FROM tabla)/2

te da algun error? lo prueba y da bien (redondea hacia abajo)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Lupin

derepente estoy haciendo algo mal
puse :
Código (sql) [Seleccionar]
SELECT * FROM preguntas LIMIT (SELECT COUNT(*) FROM preguntas)/2

usando el sql de phpmyadmin de xampp

y me arroja esto:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(SELECT COUNT(*) FROM preguntas)/2' at line 1

engel lex

rayos tienes razon... buscando conseguí cosas como esta

Código (sql) [Seleccionar]
SET @medio = (SELECT COUNT(*) FROM algo)/2;
PREPARE STMT FROM 'SELECT * FROM algo LIMIT ?';
EXECUTE STMT USING @medio;
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.