Domnívám se, že to nyní odpovídá vašim požadavkům?
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);
Struktura vašeho kódu je příliš špatná na to, abych skutečně zjistil, co se děje, ale v podstatě se zdá, že jste nevěděli, že agregační operátory jako MAX()
vrátí pouze jednu hodnotu.
Také vám nebylo jasné, jakou minimální/maximální cenu chcete (předpokládal jsem, že je to za pair
)
Spusťte kód a zjistěte, zda se vrací správně? Pokud ne, řekněte mi, kde se neshoduje, a já to mohu začít opravovat!
UPRAVIT Nové výsledky: