PHP経由のフォーム入力に合わせていくつかのPostgreSQL SELECTクエリがあります。これらのうちの1つは、各フィールド内の最小値を検索するSELECTクエリです(また、最大値を検出するクエリもあります)。同じテーブルDO/DONTの他のカラムがNULLの場合、カラムのMIN/MAXを見つける
最小値の場合:
SELECT
MIN(col1) "Min_col1"
MIN(col2) "Min_col2"
MIN(col3) "Min_col3"
FROM table
残念ながら、テーブル内には、すべてのフィールドにかなりのNULL値があります。これに対処するために、このクエリの一部としてNULL値を含める/除外するかどうかをユーザーが選択できるように、フォームにチェックボックスを追加しました。ユーザがすべての列のNULL値を含めるしたい場合
たとえば、:フィールドの各々は、少なくとも一つのNULL値を有するので
SELECT
MIN(col1) "Min_col1"
MIN(col2) "Min_col2"
MIN(col3) "Min_col3"
FROM table
WHERE
(col1 IS NULL) AND
(col2 IS NULL) AND
(col3 IS NULL)
しかし、上記のクエリは、すべてのNULLSを返します。
私が代わりに好きなのは、各フィールドのMINを取り出すことができ、他のフィールドにNULL値を含めるか除外することです。例えばMIN2(col1)col2のNULLSを含める/除外するcol2 & col3など
これについては、最も簡単な方法は?クエリはPHPを介してフォーム入力から集められているので、できるだけモジュール式にしておきたいと思います。
あなたはこれをチェックしてください - http://stackoverflow.com/questions/12009817/sql-selecting-min-value-from-row-data-with-null-values –
役に立つ:http://stackoverflow.com/質問/ 19029842/if-then-else-statements-in-postgresql –
分を選択します( 'Include' = {parameter}の場合、col2がnullの場合は0、そうでない場合はcol2が終了するelse = col2 end) from your_table {parameter}の値は 'Include'または 'Exclude'です。これらの値は、チェックボックスのパラメータを使用して設定します。それが働いているかどうか私に教えてください。 –