2012-03-13 10 views
0

J'ai un code pour obtenir un groupe de résultats de MySQL, s'il vous plaît voir ci-dessous,erreur avec requête Mysql groupe

SELECT string, COUNT(string) as myCount 
FROM ip_stats WHERE string != '' OR string IS NOT NULL 
GROUP BY string 
ORDER BY myCount DESC 
LIMIT 10 

Maintenant, ce code fonctionne parfaitement, mais quand j'ajouter une autre clause where ci-dessous renvoie la mêmes résultats et semble être complètement ignorer la section member = du claus where?

SELECT string, COUNT(string) as myCount 
FROM ip_stats WHERE member_id = '000826' string != '' OR string IS NOT NULL 
GROUP BY string 
ORDER BY myCount DESC 
LIMIT 10 

Des idées ou des conseils sont appréciés.

Répondre

0

Cela n'a pas de sens, donc je pense qu'il ne peut pas être ce que vous voulez:

WHERE string != '' OR string IS NOT NULL 

string IS NOT NULL renverra toutes les valeurs non nulles (y compris '').

Je devine que vous voulez exclure les deux chaîne vide et valeurs de chaîne vide, dans ce cas, ce qui est probablement la requête que vous voulez:

SELECT string, COUNT(string) as myCount 
FROM ip_stats 
WHERE member_id = '000826' 
AND string IS NOT NULL 
AND string != '' 
GROUP BY string 
ORDER BY myCount DESC 
LIMIT 10 
+0

Cela a fonctionné Parfait, merci, très apprécié –

2

vous avez des erreurs sur votre clause where:

WHERE member_id = '000826' string != '' OR string IS NOT NULL 

devrait probablement

WHERE member_id = '000826' AND (string != '' OR string IS NOT NULL) 
0

Le AND-part has priority over the OR-part. Mettre entre parenthèses pour résoudre ceci:

SELECT string, COUNT(string) as myCount 
FROM ip_stats 
WHERE member_id = '000826' 
AND (string != '' OR string IS NOT NULL) 
GROUP BY string 
ORDER BY myCount DESC 
LIMIT 10 

Ce que vous écriviez a donné en fait ce qui était pas ce que vous vouliez:

WHERE (member_id = '000826' AND string != '') 
OR string IS NOT NULL 
+0

Merci, qui fonctionnait très bien, je suis cependant Maintenant, revenons à mon problème d'origine, qui est quand il regroupe les résultats, le premier résultat est vide qui est toujours retiré de la base de données. J'avais réussi à arrêter cela mais maintenant il semble avoir réapparu. –