IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Comment sélectionner les lignes ayant plus de 2 occurences dans un table ?


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 188
    Points : 66
    Points
    66
    Par défaut Comment sélectionner les lignes ayant plus de 2 occurences dans un table ?
    Bonjour
    je cherche à faire un sélection des enregistrements ayant plus de deux occurrences dans la table ( client ayant acheté plus d'un article sur la table article qui contient un id_client et une ligne par article acheté )
    j'ai peiné à ça mais ça ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select * from article 
    where id_client in ( select id_client , count(*) from article having count(*) > 1)
    le problème c'est que la sous-sélection doit comporter un seul champ
    .
    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 869
    Points
    12 869
    Par défaut
    Bonjour,
    Je pense que tu peux te passer de la sous-requête, et utiliser une jointure:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select distinct a1.*
    from article a1
    inner join article a2 on a1.id_client = a2.id_client and a1.idarticle <> a2.idarticle

    Tatayo.

  3. #3
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 188
    Points : 66
    Points
    66
    Par défaut
    je vous remercie pour votre réponse
    y a t'il un moyen d'ajouter un critère par rapport au nombre d'articles (comme havin count(idarticle)>2 ou 3 )
    car je conte utiliser cette requette dans un report qui affiche les client ayant acheter plus d'un ou deux ou trois articles selon un paramètre d'entre (nbr_articles_achetés)

    merci

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : Juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Hello belaggoun2000. Peux-tu montrer la structure des tables? Pour t'aider un peu mieux.
    EDIT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT
        id_client,
        COUNT(*) as compte
    FROM
        article
    GROUP BY
        id_client
    HAVING
        COUNT(*) >= 2
    ORDER BY
        compte

  5. #5
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 188
    Points : 66
    Points
    66
    Par défaut
    merci pour votre réponse
    la structure de la table est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ID_CLIENT , ID_ARTICL , MTT_ACHAT , DATE_ACHAT 
    ---------------------------------------------------
    1               22             1000             12/10/2013
    1               23              200              12/10/2013
    2               10              250              01/10/2013
    3               22             1000             05/10/2013
    3               19              1000            10/10/2013
    le but c'est après la sélection j’obtiens les lignes (enregistrements) correspondants aux client 1 et 3 si j'ai fait un critere >1 ( ayant acheter plus de 1 articles)
    et j'obtiens tous mes enregistrements si je fait un critere count >0 ( ayant acheter plus de zero articles)
    merci

  6. #6
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par belaggoun2000 Voir le message
    Bonjour
    .....
    j'ai pené a sa mais sa ne marche pas :
    select * from article where id_client in ( select id_client , count(*) from article having count(*) > 1)
    le probleme c que la sous selection doit comprter un seul champ
    .
    merci
    tu étais sur le bon chemin..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select * 
    from latable t 
    where t.ID_CLIENT in ( select A.ID_CLIENT 
                                         from latable A 
                                         group by A.ID_CLIENT 
                                         having count(*) >1);
    cette requete est pour afficher toutes les champs de la table, sinon, pour savoir les ID_CLIENTen question il suffit d'executer juste la sous requete

  7. #7
    Membre du Club
    Inscrit en
    Juin 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 188
    Points : 66
    Points
    66
    Par défaut
    Merci mes amis surtout islamov
    mon problème et résolu . je ne pensé pas que c'est possible de faire un group by sur une seule colonne dans le select .
    merci encore une fois .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment supprimé les lignes n'ayant pas 12 caractères
    Par chris1293 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2014, 17h10
  2. Réponses: 4
    Dernier message: 31/01/2014, 11h38
  3. Réponses: 6
    Dernier message: 22/04/2008, 11h50
  4. Réponses: 12
    Dernier message: 14/02/2008, 04h31
  5. comment ne pas sélectionner les lignes supprimées
    Par papilou86 dans le forum Excel
    Réponses: 4
    Dernier message: 12/12/2007, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo