Comment puis-je faire deux condition dans la clause having

J'ai un tableau similaire:

domain      |   file      | Number 
------------------------------------     
aaa.com     | aaa.com_1   | 111
bbb.com     | bbb.com_1   | 222
ccc.com     | ccc.com_2   | 111
ddd.com     | ddd.com_1   | 222
eee.com     | eee.com_1   | 333

J'ai besoin d'interroger le nombre de Domains qui partagent le même Number et leur File le nom se termine par _1. J'ai essayé le suivant:

select count(domain) as 'sum domains', file
from table 
group by Number
having
count(Number) >1 and File like '%\_1'; 

Il me donne:

sum domains | file
------------------------------
2           | aaa.com
2           | bbb.com

J'attend de voir la suite:

sum domains | file
------------------------------
1           | aaa.com
2           | bbb.com

Parce que le Number 111 apparaît une fois avec File se termine avec _1 et _2, donc il faut compter 1 seulement. Comment puis-je appliquer les 2 conditions que j'ai dit plus tôt correctement ?

MySQL est libre de choisir n'importe quelle valeur de non-agrégées colonnes dans chaque groupe, de sorte que la valeur sélectionnée pour file est indéterminée. Votre résultat attendu affiche un nombre de 2 contre bbb.com - mais il y a un seul bbb.com domaine/fichier dans votre table - pourquoi pensez-vous que file valeur dans le second groupe (qui a sans doute Number=222) et non pas, par exemple, ddd.com?
Comme vous l'avez dit, la valeur sélectionnée de la file est indéterminé. J'ai mis bbb.com à titre d'exemple. Mais le problème n'est pas dans le file. mon problème dans le sum domains. Mon compte de résultat de la requête compte le nombre de fichiers qui ne se terminent pas avec _1, dont je ne veux pas et j'ai mis une condition dans le having clause, mais il semble qu'il y ait quelque chose de mal.
Eh bien, mon commentaire était vraiment destiné à souligner que l'objectif de votre demande n'est pas claire. Si la valeur renvoyée pour file est sans importance pour vous, pourquoi choisir? C'est plus normal pour sélectionner la colonne(s) sur lequel on a regroupé les résultats: c'est à dire Number dans ce cas. Pour répondre à votre question, il semble que vous probablement l'intention pour le filtre à file avant le regroupement - c'est à dire dans un WHERE clause plutôt que dans le HAVING clause (qui est effectuée sur les résultats regroupés, après l'agrégation comme COUNT(*) a déjà été effectué).
Vous êtes de droite. le file est une sorte de sens. Il est plus utile d'utiliser le "Numéro". Si j'ai utilisé where' for to filter files wich ends with _1, then how can I add another condition which is that the Nombre " est apparu plus d'une fois. j'.e, j'ai besoin d'interroger le nombre de fichiers dans File avec _1 et de partager la même Number.
Voulez-vous ces Numbers qui ont plus d'un file se terminant avec 1, ou ceux NUmbers qui ont plus d'un enregistrement d'au moins une qui se termine dans 1?

OriginalL'auteur user1810868 | 2012-12-15