PostgreSQL データベースに次のテーブルがあります。
ブックメーカー
-----------------------
| id | name |
-----------------------
| 1 | Unibet |
-----------------------
| 2 | 888 |
-----------------------
オッズ
---------------------------------------------------------------------
| id | odds_type | odds_index | bookmaker_id | created_at |
---------------------------------------------------------------------
| 1 | 1 | 1.55 | 1 | 2012-06-02 10:30 |
---------------------------------------------------------------------
| 2 | 2 | 3.22 | 2 | 2012-06-02 10:30 |
---------------------------------------------------------------------
| 3 | X | 3.00 | 1 | 2012-06-02 10:30 |
---------------------------------------------------------------------
| 4 | 2 | 1.25 | 1 | 2012-05-27 09:30 |
---------------------------------------------------------------------
| 5 | 1 | 2.30 | 2 | 2012-05-27 09:30 |
---------------------------------------------------------------------
| 6 | X | 2.00 | 2 | 2012-05-27 09:30 |
---------------------------------------------------------------------
私がクエリしようとしているのは次のとおりです。
すべてのブックメーカーからの最新の更新(created_at) からの 1/X/2 オッズと、その最後の更新からの各オッズ タイプ('1'、'2'、'X') の最高オッズを教えてください。
私のウェブサイトでは、次のように表示しています。
Best odds right now: 1 | X | 2
--------------------
2.30 | 3.00 | 3.22
昨日の更新のオッズは無効になっているので、まず最新のものを取得する必要があります。次に、前回の更新から、この場合は 2 つの異なるブックメーカーから 2 つのオッズがあるので、タイプ '1'、'2'、'X' に最適なものを取得する必要があります。
擬似 SQL は次のようになります。
SELECT MAX(odds_index) WHERE odds_type = '1' ORDER BY created_at DESC, odds_index DESC
しかし、それはうまくいきません。なぜなら、私は常に最新のオッズを取得するからです (そして、それらの最新の最高/最高ではありません)。
私が理にかなっていることを願っています。