Mysql
 sql >> Database >  >> RDS >> Mysql

Mysql Unisciti alla tabella 2 e seleziona il valore massimo e minimo tra l'intervallo di date

Credo che questo ora corrisponda alle tue esigenze?

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 struttura del tuo codice è troppo scarsa per me per capire davvero cosa sta succedendo, ma in sostanza sembra che tu non sapessi che operatori aggregati come MAX() restituire un solo valore.

Non sei stato anche chiaro su quale prezzo volevi minimo/massimo (ho ipotizzato che fosse per pair )

Fai un giro del codice e vedi se ritorna giusto? In caso contrario, dimmi dove non corrisponde e posso iniziare a patcharlo!

MODIFICA Nuovi risultati: