sql >> Base de Datos >  >> RDS >> Mysql

Mysql Join 2 table y seleccione el valor máximo y mínimo entre el rango de fechas

Creo que esto ahora coincide con sus requisitos?

SELECT *
FROM Orders
JOIN (SELECT price as maxPrice, pair, tr_time as maxTime FROM Rates
    JOIN (SELECT Rates.pair, MAX(Rates.price) AS price
        FROM Rates, Orders 
        WHERE (Rates.tr_time between Orders.opentime and Orders.closetime) 
        GROUP BY Rates.pair) 
    as MaxPrices USING (price, pair)) maxRates USING (pair)
JOIN (SELECT price AS minPrice, pair, tr_time as minTime FROM Rates
        JOIN (SELECT Rates.pair, MIN(Rates.price) AS price
            FROM Rates, Orders 
            WHERE (Rates.tr_time between Orders.opentime and Orders.closetime) 
            GROUP BY Rates.pair) 
    as minPrices USING (price, pair)) minRates USING (pair);

La estructura de su código es demasiado pobre para que realmente pueda entender lo que está sucediendo, pero esencialmente parece que no sabía que los operadores agregados como MAX() devuelve un único valor.

Tampoco ha sido claro sobre cuál quería el precio mínimo/máximo de (supongo que es por pair )

Ejecute el código y vea si regresa, ¿verdad? Si no, ¡dígame dónde no coincide y puedo empezar a parchearlo!

EDITAR Nuevos resultados: