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 :

[SQL] : PB avec count + min


Sujet :

Langage SQL

  1. #1
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut [SQL] : PB avec count + min
    Bonjour,

    J'ai deux tables, une client et une facture qui contient le code_client.
    Je souhaiterais réaliser une requête qui me permette de récupérer le nom du client qui posséde le moins de facture.
    J'arrive à récuperer le nombre de facture par client mais je n'arrive pas à mettre en place ma jointure pour récuperer le nom du client qui a le moins de facture car je n'arrive pas à faire le min sur le retour du count.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select client_id,count(fact_id) as nb from facture  group by client_id
    Merci d'avance à tous ceux qui m'aideront

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Utilises le résultat de ta requête comme source d'une autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tmp.client_id, tmp.MIN(nb)
    FROM
     (SELECT client_id,count(fact_id) AS nb FROM facture  GROUP BY client_id) tmp

  3. #3
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Merci de ta réponse.

    J'avais déjà essayer mais j'ai le message d'erreur suivante "error near Select" je suis sous sql anywhere 5.0

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 048
    Points
    34 048
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par djeckelle Voir le message
    Merci de ta réponse.

    J'avais déjà essayer mais j'ai le message d'erreur suivante "error near Select" je suis sous sql anywhere 5.0
    Je ne connais pas SQL Anywhere. N'accepterait-il pas les sous-requêtes ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Citation Envoyé par djeckelle Voir le message
    J'ai deux tables, une client et une facture qui contient le code_client.
    Je souhaiterais réaliser une requête qui me permette de récupérer le nom du client qui posséde le moins de facture.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT client_id,count(fact_id) as nb
    FROM facture
    GROUP BY client_id
    Pour obtenir le minimum, on peut trier par ordre croissant et ne prendre qu'un seul résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT client_id, client_name, count(fact_id) as nb
    FROM facture
      INNER JOIN client ON facture.client_id = client.client_id
    GROUP BY client_id
    ORBER BY nb ASC
    LIMIT 1

  6. #6
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    A priori le LIMIT le dérange aussi car j'ai l'erreur :
    "Syntax error near Limit"

    ...pas terrible sql anywhere

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut repense sur sql
    select min(nbr),nom from
    (SELECT Count(Fact.id) AS nbr, Fact.Client_id
    FROM Client INNER JOIN Fact ON Client.Client_id = Fact.Client_id
    GROUP BY Fact.Client_id) ess,client



    j'ai essai :est c'est bon

  8. #8
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Cette syntaxe ne passe pas en sql anywhere 5.0...
    Ca fait 1 heure que j'essaie toute sorte de chose et j'en suis toujours au même point.

    Merci pour votre aide en tous les cas

  9. #9
    say
    say est déconnecté
    Membre expérimenté
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Points : 1 300
    Points
    1 300
    Par défaut
    Citation Envoyé par djeckelle Voir le message
    A priori le LIMIT le dérange aussi car j'ai l'erreur :
    "Syntax error near Limit"

    ...pas terrible sql anywhere
    en effet LIMIT n'est pas standard...comme je l'ai découvert récemment...

  10. #10
    Membre régulier Avatar de djeckelle
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2004
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 46
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2004
    Messages : 87
    Points : 101
    Points
    101
    Par défaut
    Ouf au bout de tout ce temps j'ai trouvé

    Alors voici une solution....si qu'elqu'un a mieux je prends..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    SELECT
      Fct.cust_id, 
      Clt.lname, 
      Clt.Fname,
     count(Fct.id) AS nbFacture
    FROM 
       Facture Fct, 
       Client Clt
    WHERE
      Fct.cust_id = Clt.id
    GROUP BY
       Fct.cust_id,  
       Clt.lname,
       Clt.Fname
    HAVING  
      nbFacture<= ALL( select  count(F.id) from Facture F , Client C where F.cust_id = C.id  group by F.cust_id )

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

Discussions similaires

  1. Erreur SQl pour select count avec critere date
    Par fdalyon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 10/05/2010, 19h50
  2. Simplifier requete SQL avec COUNT multiples
    Par french-petzouille dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/10/2007, 10h57
  3. [SQL] Problème avec SELECT COUNT(*)
    Par jpascal dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/11/2006, 12h37
  4. [SQL]Requete avec 2 count(*) sur la même table
    Par Sonny dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/11/2005, 16h41
  5. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 15h49

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