これが私のテーブル構造のモデルです。3つのテーブル。
---------------- ---------------------------- -------------------------------
|possibilities | |realities | |measurements |
|--------------| |--------------------------| |-----------------------------|
|pid| category | |rid | pid | item | status | |mid | rid | meas | date |
|--------------| |--------------------------| |-----------------------------|
|1 | animal | |1 | 1 | dog | 1 (yes)| |1 | 1 | 3 | 2012-01-01|
|2 | vegetable| |2 | 1 | fox | 1 | |2 | 3 | 2 | 2012-01-05|
|3 | mineral | |3 | 1 | cat | 1 | |3 | 1 | 13 | 2012-02-02|
---------------- |4 | 2 | apple| 2 (no) | |4 | 3 | 24 | 2012-02-15|
|5 | 1 | mouse| 1 | |5 | 2 | 5 | 2012-02-16|
|7 | 1 | bat | 2 | |6 | 6 | 4 | 2012-02-17|
---------------------------- -------------------------------
私が求めているのは、関連する「現実」のステータスが1(現在追跡されていることを意味する)である「可能性」テーブルの特定のエントリの測定範囲に基づいた一連のカウントを表示する結果ですが、関連する唯一の測定値は最新のものです。
これは私が可能性として動物を使用して探している結果の例です。
-----------------------
| 0-9 | 10-19 | 20-29 |
|---------------------|
| 2 | 1 | 1 |
-----------------------
したがって、この例では、リンゴの列は動物ではないためカウントに使用されませんでした。また、ステータスがno(測定しないことを意味する)に設定されているためコウモリも使用されず、最新の測定値のみが使用されました。カウントを決定します。
現在、実際の使用で回避策がありますが、データベースの正規化が適切に行われていません。私の現実のテーブルには、新しい測定値が取得されて測定値テーブルに入力されたときに更新されるcurrent_meas列があります。次に、最初の2つのテーブルのみを使用する必要があり、たとえば、値が0〜9のIFを使用する一連の埋め込みSUMステートメントを含む単一のSELECTステートメントがあります。それは私が欲しいものを正確に与えてくれますが、私のアプリはこの便利さが他の分野で問題になっているところまで進化しました。
それで、問題は、1つのステートメントでこれを行うためのよりエレガントな方法がありますか?副選択?一時テーブル?カウントを取得することは、アプリが何であるかの中核です。
これは、PHP5、MySQL5、JQuery 1.8ベースのWebアプリであり、さらにいくつかのオプションがあります。前もって感謝します。私はスタックが大好きで、それが私を助けてくれたのと同じくらい助けてくれることを望んでいます。