Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Lupin en 27 Agosto 2014, 19:34 pm



Título: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 27 Agosto 2014, 19:34 pm
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:


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: MinusFour en 27 Agosto 2014, 20:14 pm
Lo que puedes hacer son dos consultas MySQL, una que te devuelva el numero de registros de la tabla:

Código
  1. SELECT COUNT(*) FROM tabla

Y luego hacer el limit:

Código
  1. SELECT * FROM tabla LIMIT COUNT/2


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 28 Agosto 2014, 01:32 am
Gracias amigo , peor no habra forma de hacerlo en una sola sentencia tengo que entendido que en SQL si existe esa opcion


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: dimitrix en 28 Agosto 2014, 02:00 am
Prueba a ver con una sub consulta:

Código
  1. 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?


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 28 Agosto 2014, 04:31 am
Lo intente amigo, no funciono


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 28 Agosto 2014, 04:43 am
que tal si intentamos buscarle otra aproximación al problema...

¿para qué necesitas que sea la mitad, por que no un numero fijo?


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 28 Agosto 2014, 05:51 am
Citar
que 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
 


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 28 Agosto 2014, 05:59 am
cuando haces

Código
  1. SELECT * FROM tabla LIMIT (SELECT COUNT(*) FROM tabla)/2

te da algun error? lo prueba y da bien (redondea hacia abajo)


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 28 Agosto 2014, 06:20 am
derepente estoy haciendo algo mal
puse :
Código
  1. 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


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 28 Agosto 2014, 06:51 am
rayos tienes razon... buscando conseguí cosas como esta

Código
  1. SET @medio = (SELECT COUNT(*) FROM algo)/2;
  2. PREPARE STMT FROM 'SELECT * FROM algo LIMIT ?';
  3. EXECUTE STMT USING @medio;


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Lupin en 29 Agosto 2014, 17:04 pm
Citar
Código
  1. SET @medio = (SELECT COUNT(*) FROM algo)/2;
  2. PREPARE STMT FROM 'SELECT * FROM algo LIMIT ?';
  3. EXECUTE STMT USING @medio;
Genial, pero en una sola una consulta?????

Sera porque uso esto:
Citar
mysql_query() :múltiples consultas no están soportadas

Seria interesante una sola consulta


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 29 Agosto 2014, 17:09 pm
bastante busqué el internet y no eres el unico con esa duda... todas las soluciones son multilinea... tu la pediste en mysql XD no que funcionara con mysql_query

mysql_query soporta una UNICA sentencia... para hacer multi sentencia vas a tener que usar mysqli

aqui (http://www.w3schools.com/php/func_mysqli_multi_query.asp) un ejemplo simple de como usarlo... básicamente le pones i a todos los mysql y listo


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: dimitrix en 30 Agosto 2014, 17:30 pm
bastante busqué el internet y no eres el unico con esa duda... todas las soluciones son multilinea... tu la pediste en mysql XD no que funcionara con mysql_query

mysql_query soporta una UNICA sentencia... para hacer multi sentencia vas a tener que usar mysqli

aqui (http://www.w3schools.com/php/func_mysqli_multi_query.asp) un ejemplo simple de como usarlo... básicamente le pones i a todos los mysql y listo

Quien coño usa mysqly_query???? Hace años que está desaconsejado... hay Notices por todas partes incluso en la página oficial de PHP/MySQL...

Yo cuando me cambié, lo hice directamente a MySQLi POO, que es similar pero con objetos y queda más ordenadito todo :-)


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 30 Agosto 2014, 19:21 pm
Quien coño usa mysqly_query???? Hace años que está desaconsejado... hay Notices por todas partes incluso en la página oficial de PHP/MySQL...

Yo cuando me cambié, lo hice directamente a MySQLi POO, que es similar pero con objetos y queda más ordenadito todo :-)

i feel you bro.... pero los tutoriales y casi toda la info está en mysql y no en mysqli o pdo


Título: Re:
Publicado por: Jecth en 31 Agosto 2014, 15:27 pm
Hacer una consulta, el total dividir por 2 , después verificar sí tiene mas de 1 registro la tabla, si tiene mas de 1, ejecutas para así lograr división. Ahora , haz pensando en que los números impares dará decimal? :), para eso debes dividir por 3 en caso de impares , la forma que de exacto.


Enviado desde mi XT1032 mediante Tapatalk


Título: Re:
Publicado por: engel lex en 31 Agosto 2014, 19:14 pm
Hacer una consulta, el total dividir por 2 , después verificar sí tiene mas de 1 registro la tabla, si tiene mas de 1, ejecutas para así lograr división. Ahora , haz pensando en que los números impares dará decimal? :), para eso debes dividir por 3 en caso de impares , la forma que de exacto.

lee el tema principal :s

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:


Título: Re:
Publicado por: Jecth en 1 Septiembre 2014, 02:21 am
lee el tema principal :s

Entiendo que no dese ocupar calculos en PHP, ¿pero si tiene "n" registros? , siendo "n" impar dando resultado como decimal, por eso sugerí algo más amplio al momento de realizar y ver en caso "a", "b" o "c".


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: engel lex en 1 Septiembre 2014, 02:36 am
no importa, mysql toma los valores resultado truncados


Título: Re: Que LIMIT arroje la mitad de resultados
Publicado por: Shell Root en 1 Septiembre 2014, 17:56 pm
store procedure  :silbar: