0

1問題のデータが承認されている場合とそうでない場合を含む、多数の通常フィールドと多数の「承認」フィールドを含むテーブルが MySQL にあり0ます。例えば、

*==============================================================*
* id  |  fname  | lname | fname_approved | lname_approved | ...*
*--------------------------------------------------------------*
* ... |   ...   |  ...  |        0       |        1       | ...*

実際には、さらに多くの列がありますが、同じにすぎません。私ができるようにしたいのは、単一の値を選択することです。たとえばall_approvedすべて_approvedフィールドに 1 が含まれている場合は 1 に等しく、いずれかのフィールドに 0 が含まれている場合は 0 に等しくなります。簡単な方法はありますか?これを SQL で行うか、それともアプリケーション ロジックで処理する必要がありますか?

4

4 に答える 4

1

このクエリを次のように試してください。

SELECT IF(fname_approval = 1 && lname_approval   = 1 && mname_approval= 1, 'all_approved ', 'Not-Approved') AS approved_status 
from table_name
于 2012-10-09T07:16:40.137 に答える
0

承認列の数が固定されていて、それらの値が 0 または 1 の場合、このようなことが役立ちます

Select (fname_approval + lname_approval + mname_approval) from <table_name>

このクエリは合計、たとえば 3.. を返します。これは、列の数が合計と同じであるため、すべてが承認されたことを意味します。合計が少ない場合は、すべての承認を得ていないことを意味します。

列の数をハードコーディングする必要があります (これは良い考えではありません)。お役に立てれば。

于 2012-10-09T07:14:51.620 に答える
0
select 
  case 
    when  fname_approved=1 and lname_approved=1  then 1 as all_approved
    else 0 as not_approved
  end ;
 from my_table
于 2012-10-09T07:16:36.673 に答える