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

query me esta comiendo la cabeza

Estas en el tema de query me esta comiendo la cabeza en el foro de Bases de Datos General en Foros del Web. Hola gente, tengo problemas con una query que intento relizar. Tengo una tabla con monedas (moneda_id,moneda_nombre,moneda_pais,moneda_signo) y otra con cotizaciones (cotizacion_id,cotizacion_moneda,cotizacion_cotiza cion,cotizacion_fecha) la idea es ...
  #1 (permalink)  
Antiguo 22/04/2010, 09:26
Avatar de study  
Fecha de Ingreso: junio-2009
Mensajes: 53
Antigüedad: 15 años, 5 meses
Puntos: 2
query me esta comiendo la cabeza

Hola gente, tengo problemas con una query que intento relizar. Tengo una tabla con monedas (moneda_id,moneda_nombre,moneda_pais,moneda_signo) y otra con cotizaciones (cotizacion_id,cotizacion_moneda,cotizacion_cotiza cion,cotizacion_fecha)

la idea es recuperar un listado con las monedas acompañado de su última cotizacion. Intento hacer con la siguiente query pero simplemente me recupera la primera cotizacion correspondiente a la moneda de la lista (y los otros datos por supuesto):

SELECT
monedas.moneda_signo,
monedas.moneda_id,
monedas.moneda_nombre,
cotizaciones.cotizacion_cotizacion,
Max(cotizaciones.cotizacion_id) AS id
FROM
monedas
Left Join cotizaciones ON monedas.moneda_id = cotizaciones.cotizacion_moneda
GROUP BY
monedas.moneda_id

Como tendria que usar esto para recuperar la última cotizacion (basada en la id mas alta con la moneda elegida).
  #2 (permalink)  
Antiguo 22/04/2010, 10:21
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 16 años, 3 meses
Puntos: 139
Respuesta: query me esta comiendo la cabeza

Bueno en ves de usar max(cotizaciones.cotizacion_id)

usa esto

Código MySQL:
Ver original
  1. SELECT monedas.moneda_signo,monedas.moneda_id,monedas.moneda_nombre,cotizaciones.cotizacion_cotizacion,
  2. monedas
  3. Left Join cotizaciones ON monedas.moneda_id = cotizaciones.cotizacion_moneda
  4. monedas.moneda_id limit 1 desc
  #3 (permalink)  
Antiguo 22/04/2010, 10:39
Avatar de study  
Fecha de Ingreso: junio-2009
Mensajes: 53
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: query me esta comiendo la cabeza

No me funca, y si le sqco el desc solamente me devuelve un registro
  #4 (permalink)  
Antiguo 22/04/2010, 11:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: query me esta comiendo la cabeza

A ver así:
Código MySQL:
Ver original
  1. SELECT t1.moneda_signo,t1.moneda_id,t1.moneda_nombre,t1.cotizacion_cotizacion, t1.cotizacion_fecha
  2.  FROM (SELECT monedas.moneda_signo,monedas.moneda_id,monedas.moneda_nombre,cotizaciones.cotizacion_cotizacion, cotizaciones.cotizacion_fecha
  3. FROM monedas
  4. LEFT JOIN cotizaciones
  5.  ON monedas.moneda_id = cotizaciones.cotizacion_moneda
  6.  ORDER BY cotizaciones.cotizacion_fecha DESC)t1
  7.  GROUP BY monedas.moneda_id

No lo he probado.
  #5 (permalink)  
Antiguo 22/04/2010, 13:02
Avatar de study  
Fecha de Ingreso: junio-2009
Mensajes: 53
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: query me esta comiendo la cabeza

Muchisimas gracias a ambos, al final lo solucione con una consulta anidada (una monstruosa consulta anidada). No se las paso porque como me obligan a usar un datagris raro tuve que ponerla segmentada en un monton de metodos. Muchisimas gracias de nuevo

Etiquetas: join, moneda, query
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 00:51.