0

どの従業員グループをレポートに含めるか除外するかを決定するために使用したい HTML ページにチェック ボックスがあります。これまでのところ、チェックボックスがチェックされていない場合はステータスに関係なくすべての従業員を含めるか、チェックボックスがチェックされている場合は退職した従業員のみを表示するクエリしか取得できません。('' はチェックボックス)

SELECT USERS.UserName AS "Last_Name", USERS.UserName_First AS "First_Name", 
USERS.Retired AS "Retired"
FROM   Employee USERS
WHERE   
USERS.Retired IS NULL OR USERS.Retired = '<$client.form.retired>'
ORDER BY isnull(USERS.Retired , 0)

私がこれを機能させたいのは、チェックボックスがチェックされている場合、アクティブな従業員と一緒に退職した従業員を含め、退職したステータスで注文することです。しかし、チェックボックスがチェックされていない場合は、アクティブな従業員を表示し、退職した従業員をレポートから完全に除外したいだけです。これはこれとは逆です。(副次的な問題は、列がランダムな空白の列になることですが、それについて何かできるかどうかはわかりません)。

Case ステートメントを使用して WHERE 句でこれを実現するにはどうすればよいですか?

4

4 に答える 4

2
SELECT USERS.UserName AS "Last_Name", USERS.UserName_First AS "First_Name", 
USERS.Retired AS "Retired"
FROM   Employee USERS
WHERE  @Retired='True' OR ( @Retired='False' and Users.Retired IS NULL) 
ORDER BY isnull(USERS.Retired , 0)
于 2013-09-17T03:14:27.347 に答える
0

caseステートメントを使用する必要はありません。パラメーターを追加するだけで済みます

チェックボックスがチェックされている場合は、@Retired に格納されるパラメータがあり、チェックされていない場合は、null 値が @Retired に渡されます。null 値がある場合、SQL はデータを取得して u に戻します =)

SELECT USERS.UserName AS "Last_Name", USERS.UserName_First AS "First_Name", 
USERS.Retired AS "Retired"
FROM   Employee USERS
WHERE   
(@Retired IS NULL OR USERS.Retired = @Retired)
ORDER BY isnull(USERS.Retired , 0)
于 2013-09-17T01:59:17.613 に答える
0

パラメータの使用方法についてはわかりませんが、次のようなものが機能するはずです。

SELECT USERS.UserName AS "Last_Name", USERS.UserName_First AS "First_Name", 
USERS.Retired AS "Retired"
FROM   Employee USERS
WHERE  @Retired /*your parameter from your form*/ IS NOT NULL
OR Users.Retired IS NULL 
ORDER BY isnull(USERS.Retired , 0)
于 2013-09-17T01:45:04.413 に答える
0

コメントとして投稿できないため、回答として追加します

上記のステートメントは、最初に User.Retired フラグが null (アクティブなユーザーを意味する) かどうかをチェックし、次にアクティブなユーザーが見つかった場合、2 番目の条件をチェックしません。 USERS.Retired = <$client.form.retired>

これはうまくいかないと思います。

チェックボックスがオンになっている場合にのみ、Retired行を結果に追加する必要があると思います。その場合、UI でチェックボックスがオンになっているかどうかを最初に確認する必要があります。はいの場合、アクティブを含むすべての行が必要になるため、行をまったくフィルタリングしないでください。

チェックボックスがチェックされていない場合、次の条件はアクティブなレコードをフィルタリングします。このように私が書いたクエリを少し変更するだけです

'<$client.form.retired>'= 1 Or ISNULL(USER.Active, 0) = 0

お役に立てれば。

于 2013-09-19T07:17:54.627 に答える