(TikiWiki CMS、トラッカーアプリケーションで)特定の値に対応する行をカウントするために、自己結合表に要約を作成しています。しかし、私は、同じ値を持つことができる2つの列がある場合があり、最初の非NULL値を特定の順序で取得するSQLが必要です。ここでWHERE文でCOALESCEまたはIFNULLを使用してNULL以外の値を選択します。
は、私が仕事テーブルtiki_tracker_item_fields
の例である:
itemId | fieldId | value
==========================
41 | 236 | Paris
41 | 213 | Paris
14 | 236 |
14 | 213 | Paris
25 | 236 | Paris
25 | 213 |
私はどちらかのフィールドIdを236またはフィールドID 213で、値として「パリ」を持っているすべての行をカウントするクエリで。ここでの結果は次のようになります。私の要求がある3.
:
SELECT COUNT(*) AS sp_actions
FROM
`tiki_tracker_item_fields` AS actions
WHERE
COALESCE(
actions.fieldId = 236,
actions.fieldId = 213
)
AND actions.value = 'Paris'
だからこれは私がフィールド236は「パリ」を持っているときに動作しますが、ではない私は、フィールド21のためのパリを持っている場合3.
私はこのようにCOALESCEを使うことさえできません。私が見つけたすべての例は、SELECT文にCOALESCEを入れました。
そして、パフォーマンスの問題がある...
グレート!魅力のように動作し、高速です。ありがとう!今私は、あなたの例の周りに私の心を包んで、特にそれがどのように動作するのかを理解する必要があります。 –
また、WHERE文で制御フロー関数を使用することが可能かどうかを知りたいのですが... –