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

consulta last rows unique

Estas en el tema de consulta last rows unique en el foro de Mysql en Foros del Web. estimados estoy haciendo un ranking por tiempo tengo algo como esto ID | socialid | nombre | tiempo --------------------------------------- 5 | 1234 |juan | 10 ...
  #1 (permalink)  
Antiguo 22/04/2014, 09:01
Avatar de Sandino  
Fecha de Ingreso: octubre-2006
Mensajes: 277
Antigüedad: 18 años, 1 mes
Puntos: 1
consulta last rows unique

estimados estoy haciendo un ranking por tiempo tengo algo como esto

ID | socialid | nombre | tiempo
---------------------------------------
5 | 1234 |juan | 10
2 | 1235 |pedro | 12
3 | 1236 |marcelo | 14
1 | 1234 |juan | 15


la cosa es que hago un
SELECT DISTINCT socialid, pero siempre me tira el ID 1 de juan necesito que me traiga el ID 5 ya que tiene mejor tiempo. Como lo puedo hacer??.
Saludos
  #2 (permalink)  
Antiguo 22/04/2014, 09:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta last rows unique

Cita:
Como lo puedo hacer??.
Primero, posteandonos la query completa y sin quitarle nada, como para aseguarnos que estás haciendo.
En segundo lugar, si lo que quieres es el máximo valor de un campo, en base al valor de otro campo (el usuario, por ejemplo), para eso existen en todos los DBMS las funciones de agrupamiento MIN(), MAX(), etc.
O sea:
Código MySQL:
Ver original
  1. SELECT MAX(id) Id
  2. FROM tabla
  3. WHERE usuario = 'Juan'
o si los quieres todos:
Código MySQL:
Ver original
  1. SELECT MAX(id) Id
  2. FROM tabla
  3. GROUP BY usuario

Lo que quisiera resaltarte es que tu preguinta es de SQL básico. Te recomiendo buscar un buen manual o tutorial, y darle una buena leída antes de proseguir.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/04/2014, 09:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: consulta last rows unique

Si por "mejor tiempo" buscas el tiempo minimo de cada persona:

Código MySQL:
Ver original
  1. SELECT socialid,nombre,min(tiempo)
  2. FROM tuTabla
  3. GROUP BY socialid,nombre;

Esto da el tiempo minimo de cada "socialid"


Código MySQL:
Ver original
  1. SELECT t.id,sbc.socialid,sbc.nombre,mtiempo
  2. FROM tuTabla t INNER JOIN (SELECT socialid,
  3.                                                          nombre,
  4.                                                          min(tiempo) mtiempo
  5.                                              FROM tuTabla
  6.                                              GROUP BY socialid,nombre) cbc
  7.                          ON t.socialid=sbc.socialid AND t.tiempo=sbc.mtiempo;
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #4 (permalink)  
Antiguo 22/04/2014, 10:15
Avatar de Sandino  
Fecha de Ingreso: octubre-2006
Mensajes: 277
Antigüedad: 18 años, 1 mes
Puntos: 1
Respuesta: consulta last rows unique

La consulta que estoy haciendo es

SELECT * FROM USUARIOS
order by tiempo ASC
y me funciona correctamente el problema que me tira usuarios repetidos, ahora si utilizo GROUP BY o DISTINCT la consulta no me resulta ya que si lo agrupo o le hago un distinto me devuelve el primer registro ingresado no el mejor tiempo.
intente con max o min pero no me resulto.
Espero me puedan ayudar gracias

Etiquetas: rows, select, unique
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 23:12.