Je pense que cela correspond maintenant à vos besoins ?
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);
Votre structure de code est trop pauvre pour que je puisse vraiment comprendre ce qui se passe, mais il semble essentiellement que vous ne saviez pas que les opérateurs d'agrégation tels que MAX()
renvoie une seule valeur.
Vous n'avez pas non plus été clair sur le prix minimum/maximum que vous vouliez (j'ai supposé que c'était par pair
)
Exécutez le code et voyez s'il revient correctement? Si ce n'est pas le cas, dites-moi où cela ne correspond pas et je pourrai commencer à le corriger !
MODIFIER Nouveaux résultats :