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. 'OPTION SQL_SELECT_LIMIT =DEFAULT'

    2. DoctrineとLIKEクエリ

    3. あるサーバーから別のサーバーへのMySQLデータベースのインポート

    4. mysql_fetch_array()/ mysql_fetch_assoc()/ mysql_fetch_row()/mysql_num_rowsなど...パラメーター1がリソースであることが必要です