sql >> Databáze >  >> RDS >> Mysql

Mysql Join 2 table a vyberte maximální a minimální hodnotu mezi časovým obdobím

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:



  1. C#, MySQL – při provádění příkazu došlo k fatální chybě – zkontrolována další řešení, něco mi chybí

  2. TRANSACTION_MUTEX a přístup k více relacím

  3. Výkon vkládání MySQL InnoDB (Windows)

  4. Je skutečně možné vložení SQL přidáním druhého dotazu?