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

Requêtes et SQL. Discussion :

Rêquete de deux Sommes avec clause HAVING différente [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Par défaut Rêquete de deux Sommes avec clause HAVING différente
    Bonjour,

    J'ai une liste de gamme de fabrication chaque gamme contient plusieurs opération.
    Chaque opération contient un temps et un type d'opération (CN (commande numérique) ou manuelle)

    L'idée de ma requête est d'obtenir 3 champs. Un champs avec l'id d'article, un champs avec la sommes des temps CN (machine) par article et un autre avec la somme des temps manuelle par article.


    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Gamme_referentiel.id_article, Sum(([Operation].[tps_preparation]/[Gamme_referentiel].[taille_lot])+([Operation].[tps_traitement]*[Poste_travail].[coeff_amelioration])) AS Temps_CN
    ,Sum(([Operation].[tps_preparation]/[Gamme_referentiel].[taille_lot])+([Operation].[tps_traitement]*[Poste_travail].[coeff_amelioration])) AS Temps_Manu
    FROM Gamme_referentiel INNER JOIN (Poste_travail INNER JOIN Operation ON Poste_travail.[id_poste] = Operation.[id_poste]) ON Gamme_referentiel.[id_cle_groupe_gamme] = Operation.[id_cle_groupe_gamme]
    GROUP BY Gamme_referentiel.id_article, Poste_travail.type_poste HAVING [Poste_travail].[type_poste]="CN" , Poste_travail.type_poste HAVING ([Poste_travail].[type_poste]="Manuelle");

    Mon code SQL a une erreur sur l'enchainement des deux clause HAVING dans le group by. Pas sûr qu'on puisse mettre deux clauses having dans un group by mais je ne vois pas comment faire autrement.

    Merci pour votre aide.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 120
    Billets dans le blog
    47
    Par défaut
    Bonjour,

    On doit pouvoir faire une requête Analyse croisée.

    Commence par faire une requête de regroupement :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT     gamme_referentiel.id_article,
               SUM( ... ) AS temps ,
               poste_travail.type_poste
    FROM  ...  INNER JOIN ... ON ... 
    WHERE  poste_travail.type_poste in ("CN", "Manuelle") 
    GROUP BY   gamme_referentiel.id_article,
               poste_travail.type_poste

    puis tu bascules en analyse croisée dans l'assistant, avec l'article en entête de ligne et le type de poste en entête de colonne.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2015
    Messages : 38
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    TRANSFORM Sum((Operation.tps_preparation/Gamme_referentiel.taille_lot)+(Operation.tps_traitement*Poste_travail.coeff_amelioration)) AS temps
    SELECT Gamme_referentiel.id_article
    FROM Gamme_referentiel INNER JOIN (Poste_travail INNER JOIN Operation ON Poste_travail.[id_poste] = Operation.[id_poste]) ON Gamme_referentiel.[id_cle_groupe_gamme] = Operation.[id_cle_groupe_gamme]
    WHERE (((Poste_travail.type_poste) In ("CN","Manuelle")))
    GROUP BY Gamme_referentiel.id_article
    PIVOT Poste_travail.type_poste;

    Ça marche nickel merci pour ton aide et ton temps, j'avais jamais utilisé encore le mode analyse croisé. J'ai pile ce que je voulais !

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 120
    Billets dans le blog
    47
    Par défaut
    Super

    Mais dans ce cas, merci de cliquer sur le bouton en bas de page.

    Bonne continuation.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/07/2012, 10h41
  2. Réponses: 8
    Dernier message: 02/12/2010, 19h39
  3. Somme avec colonne de différents poids
    Par alex75 dans le forum Excel
    Réponses: 2
    Dernier message: 02/08/2009, 15h24
  4. relier deux reseau avec segment reseau diffrents
    Par passion_info dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 21/01/2009, 18h20
  5. Réponses: 2
    Dernier message: 26/03/2007, 12h05

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