2013-05-21 12 views
6

Witaj im próbuje dowiedzieć się o hrabiego w sql, ale nie mogę nawet liczyć, ile razy wartość w określonej kolumnieHrabia SQL Składnia COUNT (wartość) wiele kolumn

Moja struktura bazy danych jest to. (Tabela: naturalne)

ID | one | two | three | 

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

Próbuję to

$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']; 

ale nawet z tylko 1 kolumny w liczbie nie mogę uzyskać wynik ..

Co potrzebne jest policzyć, ile razy jest "wartość" (na przykład 7) we wszystkich kolumnach:

podobnie jak w tym przykładzie wartość 7 = 3 łącznie (wiele kolumn)

Jak mogę utworzyć sql w ten sposób.

EDIT: Trying to (gdzie jest mój problem składnia?)

$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']; 

I Suck, dzięki za odpowiedzi, ale myślę, że moje problemy są z mysql_query() Bo ja zawsze mam problem składni, z wszystkie twoje odpowiedzi i to oczywiście ja.

$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']; 

Aby rozwiązać ten ostatni kod, wystarczy użyć one ... two i tak dalej, i natural ów poprawnej składni: D

+0

tylko uwaga. 'mysql_query' jest odłożone. uczyć się mysqli lub PDO. – itachi

Odpowiedz

7

Ten daje właściwą odpowiedź, nawet jeśli wartości powtórzyć w kolumnach

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 

SQLFiddle

Jeśli następujące dane

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

wyjściowa będzie

| TOTALCOUNT | 
-------------- 
|   5 | 
+0

dzięki! Mam problem z składnią podczas budowania mysql_query() pls, se my edit. i przepraszam, wiem, że ssę –

+0

@JulesMartinez Nie ma za co :). 'NATURAL' to [słowo zastrzeżone] (https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) w MySql. Dlatego jeśli nazwiesz tabelę lub kolumnę z zastrzeżoną nazwą (której nie polecałbym), zawsze będziesz musiał użyć wstecznego "' "odpowiednio wokół nazwy tabeli lub kolumny. – peterm

+0

tak, i próbowałem "naturalny" "@ koniec kwerendy, ale problem składni w pobliżu naturalnych szczątków OH SORRY !!! backticks' 'thanks !! –