Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql Join 2 table e selecione o valor máximo e mínimo entre o intervalo de datas


Eu acredito que isso agora corresponde às suas necessidades?
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);

Sua estrutura de código é muito pobre para eu realmente descobrir o que está acontecendo, mas essencialmente parece que você não sabia que operadores agregados como MAX() retornar apenas um único valor.

Você também não sabe ao certo qual é o preço mínimo/máximo (eu assumi que é por pair )

Execute o código e veja se ele retorna certo? Se não, me diga onde não corresponde e eu posso começar a corrigi-lo!

EDITAR Novos resultados: