2013-05-21 43 views
6

Merhaba im yaklaşık sql Kont öğrenmeye çalışıyorum çoklu sütunlar, ama hatta bir değeri belirli bir sütunaKont SQL sözdizimi COUNT (değer)

Benim veritabanı yapısı şudur olduğunu kaç kez saymak olamaz. (Tablo: Doğal)

ID | one | two | three | 

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

Im bu

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

çalışıyor ama ben bile sonuç alınamıyor sayıma sadece 1 sütun ile ..

Ne ihtiyacım kaç kez saymak olduğunu bütün sütun bu örnek değeri gibi

7 = 3 toplam (birden çok sütun)

(örneğin 7) bir "değer"

Böyle bir sql nasıl yapabilirim.

DÜZENLEME: Bu çalışılıyor

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

Ben senin cevaplar için, teşekkür EMMEK (? Nerede sözdizimi sorunudur), ancak ben her zaman bir sözdizimi sorun var çünkü benim sorunlarım ile) mysql_query (ile olduğunu düşünüyorum tüm cevapların ve açıkçası ben.

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

sadece böyle devam ... one ve two kullanın bu son kod saptamak ve natural doğru sözdizimi şu: D

+0

olacaktır. 'mysql_query' kullanımdan kaldırıldı. mysqli veya PDO'yu öğrenir. – itachi

cevap

7

Bu seferki değerler sütunlarda tekrar ettiğinden bile doğru cevabı verecektir

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

Aşağıdaki varsa veri

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

Çıktı sadece bir not

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

teşekkürler !!!! mysql_query() pls oluştururken bir sözdizimi sorunu var, benim düzenlemeyi se. ve üzgünüm ben emmek biliyorum –

+0

@JulesMartinez Hoş Geldiniz :). “NATURAL”, MySql'de bir [ayrılmış kelime] (https://dev.mysql.com/doc/refman/5.5/en/reserved-words.html) 'dir. Bu nedenle, tablonuzu veya sütununuzu ayrılmış bir ada sahip iseniz (ki bunu tavsiye etmem), her zaman sırasıyla tablo veya sütun adında backticks ''' kullanmanız gerekir. – peterm

+0

yep, ve ben 'doğal' '@ sorgunun sonuna kadar ama doğal kalıntıları yakınında sözdizimi problemi denedim OH SORRY !!! backticks '' teşekkürler !! –