Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Consulta SQL con o sin Gruop By

Yo tengo 2 tablas, siendo estas:

TABLA1
=====
DNI
NOMBRE
CATEGORIA (niño,joven,adulto,anciano)

TABLA2
=====
DNI
PESO

Y lo que necesito hacer es lo siguiente:
Obtener siempre los nombres de:
-La persona de Mayor peso, segun la categoria
-La persona de Menor peso, segun la categoria
-El peso total de una categoria cualquiera.

Yo ensayé haciendo lo siguiente


Código SQL [-]
select A.nombre,A.DNI,(select B.DNI,MAX(B.peso) from tabla2 B where B.DNI=A.DNI) as MaxPeso,
(select C.DNI,MIN(C.peso) from tabla2 C where C.DNI=A.DNI) as MinPeso,
(select SUM(D.peso) from tabla2 D) as TotalPeso
from tabla1 A where categoria="joven"


Pero no hay caso, en que me equivoco? Group By?

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;

Última edición por MaMu fecha: 14-04-2008 a las 00:40:47.
Responder Con Cita
  #2  
Antiguo 14-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿Todo eso debe estar en la misma consulta?
No garantizo que funcione, pero se me ocurre esto:

Código SQL [-]
SELECT Tabla1.DNI, Tabla1.Nombre, Tabla2.Peso,
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.DNI = Tabla2.DNI
WHERE (((Tabla2.Peso)=Max("Peso")) AND ((Tabla2.Peso)=Min("Peso")) AND ((Tabla2.Peso)=Sum("Peso")))
ORDER BY Tabla1.Categoria

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 14-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
¿Todo eso debe estar en la misma consulta?
No garantizo que funcione, pero se me ocurre esto:


Código SQL [-]SELECT Tabla1.DNI, Tabla1.Nombre, Tabla2.Peso,
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.DNI = Tabla2.DNI
WHERE (((Tabla2.Peso)=Max("Peso")) AND ((Tabla2.Peso)=Min("Peso")) AND ((Tabla2.Peso)=Sum("Peso")))
ORDER BY Tabla1.Categoria




Saludos,
No, tampoco me funciona de esta forma
"SQL Error : invalid use of group function"

PD: uso mySQL 4.1
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #4  
Antiguo 14-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Aunque también he estado pensando en algo similar a esto:

Código SQL [-]
select Tabla1.DNI, Tabla1.Nombre, Maximo, Minimo, Suma, Tabla1.Categoria,
from tabla1 where Tabla1.DNI IN
(select Tabla2.DNI, Max(Peso) as Maximo, Min(Peso) as Minimo, Sum(Peso) as Suma
from Tabla2)
Order by Tabla1.Categoria

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 14-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
No, tambien me sale el mismo error.

Capaz me combiene hacer consultas separadas. Osea, yo quiero que me devuelva 1 solo registro, por ejemplo el nombre de mayor peso.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #6  
Antiguo 14-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Eso estaba por recomendarte, me parecen un tanto "rebuscados" esos requisitos.
Creo que es mejor devolver en forma separada. O sino prueba con una Unión.

No uso MySQL, en mi PC sólo dispongo de Access y Firebird.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 14-04-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
SOLUCIONADO

Opté por hacer las consultas por separado, ya que no pude resolver los errores por ambieguedad en los campos relacionados.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
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
Realizar una consulta sobre los registros que devuelve otra consulta Borjaserrano Firebird e Interbase 12 01-10-2007 23:19:44
Consulta dentro de otra consulta judit25 Conexión con bases de datos 1 25-06-2007 15:52:15
consulta sobre consulta superhopi SQL 2 16-05-2003 19:01:47


La franja horaria es GMT +2. Ahora son las 18:59:12.


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