これで要件に一致すると思いますか?
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);
あなたのコード構造は私が実際に何が起こっているのかを理解するにはあまりにも貧弱ですが、本質的にあなたはMAX()
のような集計演算子に気付いていなかったようです 単一の値のみを返します。
あなたはまた、あなたが望む最低/最高価格についてもはっきりしていません(私はpair
ごとにそれを仮定しました )
コードを実行して、正しく返されるかどうかを確認しますか?一致しない場所を教えてくれない場合は、パッチを適用できます!
編集 新しい結果: