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

ayuda con select max

Estas en el tema de ayuda con select max en el foro de Bases de Datos General en Foros del Web. hola a todos tengo la siguiente consulta y la hare con ejemplo para q me entiendan... tengo 4 campos, fecha, hora, precio y nick y ...
  #1 (permalink)  
Antiguo 26/05/2004, 16:49
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
ayuda con select max

hola a todos tengo la siguiente consulta y la hare con ejemplo para q me entiendan...

tengo 4 campos, fecha, hora, precio y nick y quiero obtener el REGISTRO q tenga la mayor fecha, hora y precio

si tengo estos datos

fecha(amd) hora(hms) precio nick
20040212 152305 1500 A
20040213 012305 2000 A
20040212 002305 2500 A

y si coloco select max(fecha),max(hora), max(precio) from tabla group by nick me mostraria lo siguiente

fecha = 20040213 <-- correspondiente al segundo registro
hora = 152305 <-- correspondiente al primer registro
precio = 2500 <--- correspondien al tercer registro

como hago para q me tome el mayor por registro en este caso quisiera q me desplegara
20040213, 012305,2000 <-- correspondiente al segundo registro completo


si alguien me puede ayudar se lo agradeceria
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #2 (permalink)  
Antiguo 26/05/2004, 19:24
Avatar de Avelar  
Fecha de Ingreso: noviembre-2002
Ubicación: Ensenada, Baja California, México
Mensajes: 673
Antigüedad: 22 años
Puntos: 1
Usando un poco de lógica me encuentro con que lo que quieres es obtener de todos los registros, el del último día, la hora más reciente y el precio más alto (este último criterio sólo alicaría si dos o más registros se insertaran exactamente a la misma hora del mismo día). Entonces, lo que habría qué hacer es concatenar el campo fecha con el campo hora y con el campo precio, y después de concatenarlos convertirlos a número y así pedir el MAX. Aunque creo que tendrías suficiente con la fecha y la hora.

¿Es eso lo que quieres?

Saludos
__________________
Ariel Avelar
  #3 (permalink)  
Antiguo 28/05/2004, 04:10
 
Fecha de Ingreso: mayo-2004
Mensajes: 63
Antigüedad: 20 años, 6 meses
Puntos: 0
Te falta un Having:
select max(fecha),max(hora), max(precio) from tabla group by nick
having(hora)=(select max(hora)from tabla group by nick).El having es como un Where,te cojera primero la consulta que selecciona los tres campos,y despues hara:

donde hora=(select max(hora)from tabla group by nick).Asi te cojera los campos del registro que cumpla esta condicion.Espero te sirva tio

Última edición por mariona; 28/05/2004 a las 04:13
  #4 (permalink)  
Antiguo 31/05/2004, 09:18
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
no me ha servido lo propuesto... me marca errores, como puedo llegar al resultado, ya que he tratrado pero con dos query y el proceso es muy lento, por eso necesito obtener los valores en una sola query!
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #5 (permalink)  
Antiguo 31/05/2004, 10:08
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Como no entiendo muy bien, lo que quieres obtener exactamente, ahí va un disparo al aire

select TOP 1 * from tabla ORDER BY fecha DESC, hora DESC, precio DESC

Un saludo,
  #6 (permalink)  
Antiguo 31/05/2004, 10:10
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
lo q pasa q es por nick en el ejemplo solo puse el nick A, pero tambien existe B, C.. etc.. por lo tanto no puedo utilizar un top 1
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #7 (permalink)  
Antiguo 31/05/2004, 10:20
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Bien... entonces, explica mejor lo que quieres obtener, porque palabra, que tal y como lo has puesto, no lo entiendo
  #8 (permalink)  
Antiguo 31/05/2004, 10:26
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
pero si en el primer post lo explique... solo q explique para 1 nick solamente, entonces adjunto q son mas nick, hasta ahora solo he hecho un select max(fecha+hora+precio) as info, nick from tabla group by ranemo, pero ahi he sacado solo los valores concatenados... seguire buscando mi opcion!
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #9 (permalink)  
Antiguo 31/05/2004, 11:07
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Si te entendí.. puedes usar subqueries..

Intenta con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #10 (permalink)  
Antiguo 31/05/2004, 11:10
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Ya intentaste con subqueries..

Prueba con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #11 (permalink)  
Antiguo 31/05/2004, 11:17
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Ya intentaste con subqueries..

Prueba con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #12 (permalink)  
Antiguo 31/05/2004, 11:50
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Ya intentaste con subqueries..

Prueba con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #13 (permalink)  
Antiguo 31/05/2004, 12:10
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Ya intentaste con subqueries..

Prueba con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #14 (permalink)  
Antiguo 31/05/2004, 12:26
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
Ya intentaste con subqueries..

Prueba con ésto:

Cita:
select (select max(fecha) from tabla),(select max(hora) from tabla),
(select max(precio) from tabla)
Te traerá en una sola tupla el valor máximo de tus campos.

Espero te sirva

Saludos
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #15 (permalink)  
Antiguo 31/05/2004, 15:05
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
si hago eso no correspondera a un registro, solo sacara el maximo por columna y yo quiero que sea de un registro, mostrar max(fecha) and max(hora) and max(precio) por nick, osea el registro q tiene la linea completa mayor por nick
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #16 (permalink)  
Antiguo 31/05/2004, 15:30
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco
Mensajes: 47
Antigüedad: 20 años, 6 meses
Puntos: 0
Cual es el campo con mayor prioridad, La Fecha, Hora o Monto, debe haber un campo prioritario para lograr tu objetivo.
__________________
Si puedes pensarlo, puedes hacerlo.
  #17 (permalink)  
Antiguo 31/05/2004, 15:32
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 9 meses
Puntos: 50
mmmm, es que no suena lógico eso porque puede que tengas una columna que tenga un valor mayor a todos, pero en la columna 2,puede que tenga el valor menor.. y en la columna 3 puede que sea tambien el mayor.. y eso no quiere decir que te va a traer ese registro, puesto que
no se cumplen los 3 criterios,

O no te entiendo muy bien.. a lo que quieres llegar.

Salu2
  #18 (permalink)  
Antiguo 31/05/2004, 15:33
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
es en ese orden que los has dicho... fecha, hora, precio!!

si en el post lo explique bien, he incluso comento lo q queria y q resultados quiero, solo me falto q indique para un solo nick y pueden haber mas, es por eso que realizaba el group by nick
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #19 (permalink)  
Antiguo 01/06/2004, 01:09
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
¿Qué tipo de datos son los campos? ¿texto para fecha y hora, y numérico para importe?
  #20 (permalink)  
Antiguo 01/06/2004, 07:29
Avatar de bhonox  
Fecha de Ingreso: julio-2002
Ubicación: Rengo-Viña del Mar-Stgo
Mensajes: 1.213
Antigüedad: 22 años, 4 meses
Puntos: 0
juaz!! solo eso me falto... son de tipo char <--- yo no los defini asi solo venian (tan malo no soy en modelar y estructurar)
fecha char 8 ej: 20041202
hora char 8 ej: 17502515
precio char 15 esta parseado con 0 ej: 000000000015252
__________________
Atte
Real BHONOX

Programador Cervecero! :borracho:
Lenguajes vengan a MI!!
  #21 (permalink)  
Antiguo 01/06/2004, 07:40
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Muy rápida no va a ser, pero... ...tampoco digo que vaya a funcionar, en fn, que no sé ni para que lo intento, pero por si las moscas...

SELECT nick, fecha, hora, precio, FROM TuTabla INNER JOIN
(SELECT nick, MAX(fecha + hora + precio) AS Valor FROM TuTabla GROUP BY nick) DatosMax ON TuTabla.nick = DatosMax.nick
WHERE TuTabla.fecha + TuTabla.hora + TuTabla.precio = DatosMax.Valor

Lo dicho, suerte......
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 14:21.