Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
DISTINCT a un solo campo pero que además me muestre otros

Buenas! Como estan? Bueno, esa es la consulta:

Como hago un DISTINCT a un solo campo pero que además me muestre otros?

SELECT nombre, apellido, tiempo FROM tabla WHERE estado='gano' ORDER BY tiempo LIMIT 10

Quiero que el distinct se haga sobre el nombre y apellido, pero que ademas me muestre tiempo, se puede?
Gracias!
Responder Con Cita
  #2  
Antiguo 04-03-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Cuál debe ser el resuptado?
Imagínate esta tabla:
Código:
Juan Perez 10 gano
Juan Perez 20 gano
Juan Perez 30 gano
Qué queres que te devuelva?
- Un solo tiempo? (min/max/avg)
Prueba con el group by
Código SQL [-]
SELECT nombre, apellido, min(tiempo) FROM tabla 
WHERE estado='gano' 
GROUP BY nombre,apellido
Esto devolvería
Código:
Juan Perez 10
Nota: No se de MySQL, pero en Firebird sería algo como lo que he puesto.
Responder Con Cita
  #3  
Antiguo 04-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
Gracias!!! eso funciona bien, solo hay una cosa, por alguna razon no me los esta ordenando por tiempo :S
Responder Con Cita
  #4  
Antiguo 04-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
Esta consulta devuelve mal el orden:

SELECT nombre, apellido, min( tiempo )
FROM tabla
WHERE estado = 'gano'
GROUP BY nombre, apellido
ORDER BY tiempo
LIMIT 0 , 10

y esto parece que no se puede hacer:

SELECT nombre, apellido, min( tiempo )
FROM tabla
WHERE estado = 'gano'
GROUP BY nombre, apellido
ORDER BY min( tiempo )
LIMIT 0 , 10
Responder Con Cita
  #5  
Antiguo 04-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Yo veo bien el orden.

Con esta tabla:

Código:
id  nombre  apellido tiempo  estado
1   juan    perez    10      gano
2   juan    perez    20      gano
3   juan    perez    20      perdio
4   pedro   juarez   40      gano
5   pedro   juarez   10      perdio
6   pedro   juarez   30      gano
7   luis    mendez   40      gano
y la consulta

Código SQL [-]
select nombre, apellido, min(tiempo)
from ejemplo
where estado = 'gano'
group by nombre, apellido
order by tiempo

obtengo estos registros

Código:
id  nombre  apellido tiempo  estado
1   juan    perez    10      gano
6   pedro   juarez   30      gano
7   luis    mendez   40      gano
¿Es correcto, no?

----------------------
Para recrear el ejemplo:

Código SQL [-]
create table if not exists ejemplo (
  id int(11) not null auto_increment,
  nombre varchar(45) not null default '',
  apellido varchar(45) not null default '',
  tiempo int(11) not null default '0',
  estado enum('perdio','gano') not null default 'perdio',
  primary key  (id)
);

insert into ejemplo (id, nombre, apellido, tiempo, estado) values
(1, 'juan', 'perez', 10, 'gano'),
(2, 'juan', 'perez', 20, 'gano'),
(3, 'juan', 'perez', 20, 'perdio'),
(4, 'pedro', 'juarez', 40, 'gano'),
(5, 'pedro', 'juarez', 10, 'perdio'),
(6, 'pedro', 'juarez', 30, 'gano'),
(7, 'luis', 'mendez', 40, 'gano');

Bye
Responder Con Cita
  #6  
Antiguo 04-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
es raro... pero no me lo ordena... :S
Responder Con Cita
  #7  
Antiguo 05-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
le agregue un par de datos mas a la tabla ejemplo

INSERT INTO `ejemplo` (`id`, `nombre`, `apellido`, `tiempo`, `estado`) VALUES
(1, 'juan', 'perez', 10, 'gano'),
(2, 'juan', 'perez', 20, 'gano'),
(3, 'juan', 'perez', 20, 'perdio'),
(4, 'pedro', 'juarez', 40, 'gano'),
(5, 'pedro', 'juarez', 10, 'perdio'),
(6, 'pedro', 'juarez', 30, 'gano'),
(7, 'luis', 'mendez', 40, 'gano'),
(8, 'juan', 'perez', 5, 'gano'),
(9, 'pedro', 'juarez', 8, 'gano'),
(10, 'luis', 'mendez', 3, 'gano');


y ahora no lo ordena:

juan perez 5
pedro juarez 8
luis mendez 3

Este es el Query:

SELECT nombre, apellido, min( tiempo )
FROM ejemplo
WHERE estado = 'gano'
GROUP BY nombre, apellido
ORDER BY tiempo
LIMIT 0 , 30
Responder Con Cita
  #8  
Antiguo 05-03-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Poder: 20
keyboy Va por buen camino
Ya veo.

Intenta así:

Código SQL [-]
select nombre, apellido, min(tiempo) as tiempo_min
from ejemplo
where estado = 'gano'
group by nombre, apellido
order by tiempo_min

Bye
Responder Con Cita
  #9  
Antiguo 05-03-2008
neo83 neo83 is offline
Registrado
 
Registrado: mar 2008
Posts: 6
Poder: 0
neo83 Va por buen camino
Excelente!!! Ahora si funciona bien!!!
Muchas gracias a todos los que contestaron!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ademas de Delphi que.... Kenobi Varios 3 18-01-2008 18:18:18
Update!!!, pero solo para un registro ELINK Firebird e Interbase 6 08-01-2008 20:26:41
Busqueda por un campo y que muestre sus datos freddiaz07 Conexión con bases de datos 1 30-06-2006 19:09:32
Select ordenado por un campo pero localizado por otro ingel SQL 2 04-01-2006 17:33:23
Además de IBM, también Ford trabajó para Hitler Al González Debates 0 07-02-2004 05:53:07


La franja horaria es GMT +2. Ahora son las 23:01:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi