sql >> Database >  >> RDS >> Mysql

Mysql Join 2-tabel en selecteer maximale en minimale waarde tussen datumbereik

Ik geloof dat dit nu aan uw eisen voldoet?

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

Uw codestructuur is te slecht voor mij om echt uit te zoeken wat er aan de hand is, maar in wezen lijkt het erop dat u niet wist dat aggregatie-operators zoals MAX() retourneer slechts één waarde.

U bent ook niet duidelijk geweest over wat u de minimum/maximum prijs wilde van (ik heb aangenomen dat het per pair is )

Voer de code uit en kijk of deze goed terugkeert? Zo niet, vertel me dan waar het niet overeenkomt en ik kan beginnen met patchen!

BEWERKEN Nieuwe resultaten:



  1. Laravel-querybuildermethode gebruiken whereIn() met subquery

  2. Hoe u voorbereide afschriften gebruikt met Postgres

  3. Fout:kan TypedQuery niet maken voor query met meer dan één return

  4. Klasse heeft geen tabel of tabelnaam opgegeven en neemt niet over van een bestaande aan een tabel toegewezen klasse