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

Mysql Deltag i 2-tabellen og vælg maksimum- og minimumværdi mellem datointerval

Jeg tror, ​​at dette nu matcher dine krav?

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);

Din kodestruktur er for dårlig til, at jeg virkelig kan regne ud, hvad der foregår, men i bund og grund ser det ud til, at du ikke var klar over, at aggregerede operatorer såsom MAX() returner kun en enkelt værdi.

Du har også været uklar om, hvad du ville have minimums-/maksimumprisen på (jeg har antaget, at den er pr. pair )

Kør koden og se om den vender tilbage rigtigt? Hvis ikke, fortæl mig, hvor det ikke passer, og jeg kan begynde at patche det!

REDIGER Nye resultater:



  1. Hvordan kortlægges input- og outputkolonner dynamisk i SSIS?

  2. Unitils og DBMaintainer - hvordan får man dem til at fungere med flere brugere/skemaer?

  3. Mysql-grænse med in statement

  4. Oprettelse af et relateret eller lignende indlæg ved hjælp af PHP &MySQL