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

WinDev Discussion :

Requete SQL avec groupement


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 133
    Points : 38
    Points
    38
    Par défaut Requete SQL avec groupement
    Bonjour,
    j'ai trois tables, article(codearticle,designation,...), fournisseur(codefr,nom,adresse,...) et articlefournisseur(codearticle,codefr,puHTbrut,taux_remise,puHTnet)
    je veux sélectionner le codearticle, la designation, le codefr, le nom, puHTbrut, taux_remise et le MIN(puHTnet) pour cela j'ai créer la requête SQL suivante :
    Code sql : 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    SELECT 
    	ARTICLE.CODEARTICLE AS CODEARTICLE,	
    	ARTICLE.DESIGNATION AS DESIGNATION ,	
            FOURNISSEUR.CODEFR AS CODEFR,	
    	FOURNISSEUR.NOM AS NOM,	
    	ARTICLEFOURNISSEUR.PUHT_BRUT AS PUHT_BRUT,	
    	ARTICLEFOURNISSEUR.taux_remise AS taux_remise,	
     
    	MIN(ARTICLEFOURNISSEUR.PUHT_NET) AS le_minimum_PUHT_NET
    FROM 
    	ARTICLE,	
    	ARTICLEFOURNISSEUR,	
    	FOURNISSEUR
    WHERE 
    	FOURNISSEUR.CODEFR = ARTICLEFOURNISSEUR.CODEFR
    	AND		ARTICLE.CODEARTICLE = ARTICLEFOURNISSEUR.CODEARTICLE
     
    GROUP BY 
    	ARTICLE.CODEARTICLE,	
    	ARTICLE.DESIGNATION,	
    	ARTICLEFOURNISSEUR.PUHT_BRUT,	
    	ARTICLEFOURNISSEUR.taux_remise,	
    	FOURNISSEUR.CODEFR,	
    	FOURNISSEUR.NOMT
    ORDER BY 
    	CODEARTICLE ASC
    Le problème que le résultat affiche tous les PUHT_NET et pas le min seulement.
    merci pour vos interactions.

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 053
    Points : 9 392
    Points
    9 392
    Par défaut
    J'imagine que tu utilises HFSQL. Avec certains autres SGBD, il y aurait une solution pas trop compliquée. Avec HFSQL, c'est un peu galère.

    Ici, tu lui dis : pour un article et un fabricant, affiche le prix minimum ( group by ARTICLE.CODEARTICLE, FOURNISSEUR.CODEFR ... )

    Si tu veux une ligne par CodeArticle, dans le GRoup By, il faut avoir uniquement Group by ARTICLE.CODEARTICLE. Tu peux éventuellement avoir ARTICLE.CODEARTICLE, ARTICLE.DESIGNATION.
    Et du coup il faut adapter ce qu'il y a dans le Select.

    Fais une première requête, juste pour ""entrainement"" :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select AF.codeArticle; min( AF.PUHT_NET ) as PrixNet from ArticleFournisseur AF Group by AF.CodeArticle
    Puis la solution :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Select 
            A.CODEARTICLE AS CODEARTICLE,	
    	A.DESIGNATION AS DESIGNATION ,	
            F.CODEFR AS CODEFR,	
    	F.NOM AS NOM,	
            AF.PUHT_BRUT AS PUHT_BRUT,	
    	AF.taux_remise AS taux_remise,	
    	X.PrixNet AS le_minimum_PUHT_NET
    from  (  Select AF.codeArticle; min( AF.PUHT_NET) as PrixNet from ArticleFournisseur AF Group by AF.CodeArticle) X, Article A, Fournisseur F , ArticleFournisseur AF
    where A.CodeArticle= X.CodeArticle 
       and AF.CodeArticle= X.CodeArticle 
       and AF.PUHT_NET= X.PrixNet
       and F.CodeFr = AF.CodeFr
    Si pour un article, il y a 2 fournisseurs qui proposent le même prix Net ( et qui sont les moins chers), cette requête va renvoyer 2 lignes pour cet article... C'est déjà un peu compliqué, on ne va pas aborder ce cas particulier.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2008
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 133
    Points : 38
    Points
    38
    Par défaut
    Merci infiniment sa fonctionne

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    La question ne concerne pas vraiment le logiciel Windev mais uniquement une requête SQL, la question aurait dû être posée dans la section Langage SQL sur le forum.
    Comme le problème est résolu, merci de cliquer sur le bouton en dessous du dernier message posté.

Discussions similaires

  1. requete SQL avec groupement et ventilation par classe
    Par peio89 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/10/2006, 08h49
  2. requete SQL avec valeur max
    Par oeil de nuit dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/01/2006, 08h58
  3. REQUETE SQL AVEC HAVING
    Par juju_77 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 05/08/2005, 09h49
  4. Probleme de requete SQL avec un champs date
    Par ju360modena dans le forum ASP
    Réponses: 5
    Dernier message: 16/06/2005, 11h18
  5. [JDBC] retour de requete sql avec valeur NULL
    Par maxxou dans le forum JDBC
    Réponses: 3
    Dernier message: 13/09/2004, 14h40

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