2011-11-19 5 views
3

Cette requête ne fonctionne pas. Quelqu'un peut-il m'aider s'il vous plaît?Plusieurs comptes dans une requête

$query = "SELECT 
    COUNT(WHERE Name='george') AS george_total, 
    COUNT(WHERE Name='michael') AS michael_total, 
    COUNT(WHERE Name='mike') AS mike_total 
FROM users WHERE Banned IS NOT '1' AND Active='yes' AND Logins>1 AND Registered_to_forum='1'"; 

$row=mysql_fetch_array($result); 
echo " 
    We found $row['george_total'] people with the name 'George' in our database, 
    $row['michael_total'] with the name Michael 
    and $row['mike_total'] with the name Mike. 
"; 

Répondre

8

Vous pouvez utiliser une instruction CASE et soit COUNT ou SUM.

La version COUNT est ci-dessous. COUNT ne compte que NOT NULL valeurs de sorte que vous pouvez utiliser une colonne non nulle ou constante au lieu de 1.

SELECT 
    COUNT(CASE WHEN Name='george' THEN 1 END) AS george_total, 
    COUNT(CASE WHEN Name='michael' THEN 1 END) AS michael_total, 
    COUNT(CASE WHEN Name='mike' THEN 1 END) AS mike_total /*.... rest of query*/ 

La version SUM est

SELECT 
    SUM(CASE WHEN Name='george' THEN 1 ELSE 0 END) AS george_total, 
    SUM(CASE WHEN Name='michael' THEN 1 ELSE 0 END) AS michael_total, 
    SUM(CASE WHEN Name='mike' THEN 1 ELSE 0 END) AS mike_total /*.... rest 
                    of query*/ 
+0

Merci, mais il ne retourne pas la quantité de par exemple georges , il ne renvoie que 1 ou 0. Pas 10 george ou quelque chose comme ça. – Jordy

+0

@Jordy - Vous ne devez avoir qu'un seul george alors. Les deux requêtes fonctionnent bien. Peut-être que vous les excluez à cause de votre clause "where"? –

+0

Cela fonctionne ;-) Merci beaucoup! – Jordy

Questions connexes