Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql Присъединете се към таблица 2 и изберете максимална и минимална стойност между периода от време

Смятам, че сега отговаря на вашите изисквания?

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 )

Изпълнете кода и вижте дали се връща правилно? Ако не, кажете ми къде не съвпада и мога да започна да го поправям!

РЕДАКТИРАНЕ Нови резултати:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте параметър на съхранена процедура за параметър на единица от DATE_SUB

  2. Търсене със стойност, разделена със запетая, mysql

  3. Форматиране на PHP масив за SQL IN клауза

  4. Най-бързият начин за намиране на разстояние между две широчини/дълги точки

  5. Получаване на произволни данни от MySQL база данни, но без повтарящи се данни