Ver Mensaje Individual
  #7 (permalink)  
Antiguo 16/12/2014, 12:35
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: No sé como explicarlo, pero a ver

Cita:
Iniciado por Luisfa Ver Mensaje
Buenas, si supiera enunciar el problema podría buscar por google, pero aun así, ya que estoy aquí, a ver si alguno de vosotros, que tenéis más habilidad y costumbre, ve enseguida el problema y la solución.

Tengo una tabla llamada Tabla, con 3 campos: id (autoincremental), nombre y edad:

1 - Paco - 20
2 - Luis - 30
3 - Ana - 15
4 - Pepe - 60
5 - Juan - 20

Lo que quiero hacer es una especie de query recursiva. Que vaya pasando de registro en registro y comprabando si el campo edad es mayor que la anterior, como un bucle for, pero en mysql. Si la edad de un registro es mayor que la que va justamente antes, la saca en pantalla, sino, la salta.

No sé si me expliqué bien
Es técnicamente posible, pero eso está mas del lado de la programación que de la consulta.
En todo caso, en MySLQ hay dos formas de hacer lo que quieres, pero la más precisa es algo complicada, y requiere una explciación y pruebas algo largas. No es para principiantes, sin ofender.
La segunda la podemos plantear así:
Ordenamos de menor a mayor las edades, y los IDs, y hacemos que devuelva el priemro de cada edad encontrada, de ese modo el segundo registro será siempre el primero que entró con mayor edad que el primero.
Sería mas o menos así:
Código MySQL:
Ver original
  1. SELECT id, nombre, edad
  2.   SELECT id, nombre, edad
  3.   FROM tabla T
  4.   ORDER BY edad ASC, id ASC) T1
  5. GROUP BY edad;
Atención: Esta consulta funciona sólo en MySQL. No la peudes usar en ningún otro DBMS porque te daría error de ejecución por restricciones de la clausula GROUP BY que no se aplican a MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)