6

こんにちは、SQL の Count について学習しようとしていますが、特定の列に値が何回あるかを数えることさえできません

私のデータベース構造はこれです。(表:ナチュラル)

ID |  one |  two | three |

1  |   34 |  45  |  80  |
2  |   41 |  34  |  7   |
3  |   7  |  18  |  22  |
4  |   8  |  7   |  45  |

私はこれを試しています

 $result=mysql_query("SELECT COUNT(one) AS total FROM natural
WHERE one=7")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['total'];

しかし、カウントに1列しかない場合でも、結果を取得できません..

私が必要とするのは、すべての列で「値」(たとえば7)が何回あるかを数えることです

この例のように、値 7 = 合計 3 (複数の列)

どうすればそのようなSQLを作成できますか。

編集:これを試しています(構文の問題はどこにありますか?)

$result=mysql_query("SELECT  COUNT(DISTINCT id) TotalCount FROM tblname WHERE 7 IN (one, two, three)")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['TotalCount'];

あなたの答えに感謝しますが、私の問題は mysql_query () にあると思います。なぜなら、あなたのすべての答えと明らかに私に、常に構文の問題があるからです。

$result=mysql_query("SELECT (SUM(CASE WHEN   one = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN   two = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN three = 7 THEN 1 ELSE 0 END)) TotalCount
  FROM natural")or die("Error: ".mysql_error());
$data=mysql_fetch_assoc($result);
echo $data['TotalCount'];

この最後のコードを修正するには、 one and two...などを使用するだけでnatural、正しい構文です:D

4

1 に答える 1

7

これは、値が列全体で繰り返される場合でも正しい答えを提供します

SELECT (SUM(CASE WHEN   one = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN   two = 7 THEN 1 ELSE 0 END) +
        SUM(CASE WHEN three = 7 THEN 1 ELSE 0 END)) TotalCount
  FROM table1

SQLフィドル

以下のデータがある場合

| ID | ONE | TWO | THREE |
--------------------------
|  1 |  34 |  45 |    80 |
|  2 |  41 |   7 |     7 |
|  3 |   7 |  18 |    22 |
|  4 |   7 |   7 |    45 |

出力は

| TOTALCOUNT |
--------------
|          5 |
于 2013-05-21T03:54:22.437 に答える