2017-08-29 6 views
2

私はブレザー(https://github.com/ankane/blazer)を使用していると私は、次のSQLクエリを持っています。PostgreSQLの条件節

SELECT * 
FROM survey_results sr 
LEFT JOIN clients c ON c.id = sr.client_id 
WHERE sr.client_id = {client_id} 

このクエリは本当によく働きます。しかし、client_id変数が存在するかどうかを確認するために条件付きロジックを追加する必要があります。もしそうなら、私はこの変数でフィルタリングし、そうでなければこのwhere句を起動しません。 PostgreSQLでどうすればいいですか?

答えて

4

チェックこのようなそのNULLまたはあなたの条件の場合:

WHERE {client_id} IS NULL OR sr.client_id = {client_id} 

WHERE句は次のように評価する:変数が空の場合、WHERE句は、したがって、真と評価されず、 - 何のフィルタを。そうでない場合は、OR

の次の状態に進みます。