2016-08-17 19 views
1

私は以下の列があるテーブルがあります。特定の行についてはカウント特定の値

- request_id (Auto increment) 
    - is_requested_data1 - (Enum (y,n) 
    - is_requested_data2 - (Enum (y,n) 
    - is_requested_data3 - (Enum (y,n) 
    - is_requested_data4 - (Enum (y,n) 

は、= 1 REQUEST_ID言うことができます、私は「Y」の数を知りたいです。 私は変数を宣言しようとしましたが、mysqlのケースを使用している列に対して 'y'があるたびに変数の値をインクリメントしようとしましたが、うまくいかないようです。

アドバイスをしてください。

+0

どの列からの「y」のカウント? – 1000111

+0

すべての列は、ENUM-yまたはnに設定されたデータ型を持ちます。したがって、「y」は任意の列の値になります。 request_data1、request_data2、request_data3に3 'yがある場合、カウントを' 3 'とするクエリは何でしょうか。 –

答えて

1

COUNTではなく+が必要です。

SELECT 
    request_id, 
    (
     (is_requested_data1 = 'y') + 
     (is_requested_data2 = 'y') + 
     (is_requested_data3 = 'y') + 
     (is_requested_data4 = 'y') 
    ) AS totalYs 
FROM 
    your_table 
WHERE request_id = 1 

注: MySQLのブール式は、0/1に解決しますので。すなわち、yには、便宜上、以下のリターン1

is_requested_data1 = 'y' returns 1 

WORKING DEMO次いでyに等しいis_requested_data1あれば1、それ以外のときは0

、戻り列と一致するたびに、私はカラムを使用しました名前はA, B, C, Dです。

+0

ありがとう、しかし、上記のisntは私が欲しいものです。上記のように3つのyがある場合。出力を '3'にしたい。私は、どのrequest_idにいくつのyがあるか知りたいだけです。 –

+0

実際には、与えられた 'request_id'の' y'の数を数えます。それがあなたが望んだことです。 'request_id = 1'に3つの' y'がある場合、出力として3が得られます。 – 1000111

+0

正確なクエリを実行しようとしましたが、何個のyがあるかにかかわらず1を出力します。 –

関連する問題