Selectionner les lignes dont un champ apparait plusieurs fois

Signaler
Messages postés
2
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
30 mars 2005
-
Messages postés
2
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
30 mars 2005
-
Bonjour a tous !



sur la table reservations

client_id | transaction_id

je cherche a faire ressortir les client_id dont le nombre d'apparitions depasse un certain seuil.



Exemple : afficher les clients ayant plus de 3 transaction_id differentes, dans la table

client_id | transaction_id

5 1

5 1

5 2

5 3

8 4

8 5

5 6



(il est possible qu'une ligne avec des informations identiques
apparaisse plusieurs fois, sachant qu'il y a d'autres colones que je
n'ai pas cité ici, pour une question de claretée)



Mon ébauche de requête :

select * from reservations group by transaction_id

me donne le tableau



client_id | transaction_id


5 1

5 2


5 3


8 4


8 5


5 6



en rajoutant "ce qui va bien" sur cette requete, je voudrais maintenant obtenir

client_id

5



C'est a dire la liste des client_id qui ont plus de 3 reservations. J'ai essayé avec un count, du genre

select client_id from reservations group by (transaction_id) having ( count(client_id) > 3 );

Mais ca me renvoi une table vide ...

J'esperes avoir exposé clairement mon probleme.



Merci d'avances pour vos réponses



BlueBird

2 réponses

Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
6
Essaye avec quelque chose de ce style la :

------------------------------------
SELECT
client_id AS client_id,
transaction_id AS transaction_id,
count(id_absence) AS Total
FROM
TATABLE
GROUP BY
client_id,
transaction_id
HAVING
count(client_id) > 2
------------------------------------

Romelard Fabrice (Alias F___)
Messages postés
2
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
30 mars 2005

Voila ce que j'ai sur ma table :





mysql> select * from reservations group by transaction_id;





| client_id | transaction_id |

| 5
|
1 |

| 5
|
2 |

| 5
|
3 |

| 4
|
4 |

| 4
|
5 |

| 4
|
6 |

| 4
|
7 |








Avec ta proposition :


| client_id | transaction_id | total |

| 5
|
1 | 3 |


1 row in set (0.01 sec)





Et en metant client_id>3, le résultat est vide...





Ce qui me pose un petit probleme, car pour la premiere, il aurrait du
renvoyer le client_id 5 et 4, et pour la seconde, uniquement le 4 ...








Quid ?