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 :

[MySQL] [Débutant] effectuer un tri sur un resultat


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut [MySQL] [Débutant] effectuer un tri sur un resultat
    Bonjour,

    Ma question est celle d'un débutant.
    J'ai effectué un trie sur une base qui me donne un certain nombre de lignes et je souhaiterai faire effectuer un deuxième traitement sur ce resultat.
    Je me suis tourné vers les sous requêtes mais je ne vois pas comment l'appliquer.
    J'ai aussi pensé à faire une vue est de traité directement la vue. Néanmoins je n'ai pas besion d'une vue en tant que tel.

    Mon deuxième tri est de moyenner toutes les colonnes par un avg

    Merci d'avance

    voici le premier trie :

    select sum(temps_activitiée1)*prix_activitée1, sum(temps_activitée2)*prix_activitée2
    from temps_activitée, prix_horaire
    where prix_horaire.id_prix_horaire = temps_activité.id_prix_horaire
    and temps_activitée.client=1
    group by prix_horaire.id_prix_horaire

  2. #2
    Membre émérite
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Par défaut
    Salut,

    Qu'entends-tu par "tri" ? En informatique, trier = ordonner. Ton premier "tri", c'est le calcul des sommes ?

    Quels résultats veux-tu au final ? Les montants totaux des activités et le montant moyen de chaque activité ?

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Avec ORACLE, la syntaxe suivante fonctionne (mais ce n'est pas le cas de tous les moteurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select avg(sum(temps_activitiée1)*prix_activitée1), avg(sum(temps_activitée2)*prix_activitée2)
    from temps_activitée, prix_horaire
    where prix_horaire.id_prix_horaire = temps_activité.id_prix_horaire
    and temps_activitée.client=1
    group by prix_horaire.id_prix_horaire
    Cette requête ne ramène qu'une seule ligne.

    Sinon il est possible (mais certains moteurs ne savent pas faire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select avg(s1), avg(s2)
    from (select sum(temps_activitiée1)*prix_activitée1 as s1, 
                 sum(temps_activitée2)*prix_activitée2 as s2
          from temps_activitée, prix_horaire
          where prix_horaire.id_prix_horaire = temps_activité.id_prix_horaire
          and temps_activitée.client=1
          group by prix_horaire.id_prix_horaire)
    il est alors possible de faire un peu plus fin en ajoutant un group by au select extérieur (avec quelques conditions évidentes)

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    bonjour,

    Pour biglo
    Effectivement je souhaite faire une opération et non un tri supplémentaire.
    Le resultat final que je souhaite est une ligne avec montant meyen de chaque activité pondérée par les tarifs envigeur.


    Pour médiat
    Je suis sur MySQL est aucune des requêtes ne marche.
    Pour la deuxième, il m'est renvoyé :
    #1248 - Every derived table must have its own alias

    Merci de votre aide

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Citation Envoyé par philippe13
    Pour médiat
    Je suis sur MySQL est aucune des requêtes ne marche.
    Pour la deuxième, il m'est renvoyé :
    #1248 - Every derived table must have its own alias
    Puisque ton moteur te le dit, fais-le : ajoute un alias

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select avg(s1), avg(s2)
    from (select sum(temps_activitiée1)*prix_activitée1 as s1, 
                 sum(temps_activitée2)*prix_activitée2 as s2
          from temps_activitée, prix_horaire
          where prix_horaire.id_prix_horaire = temps_activité.id_prix_horaire
          and temps_activitée.client=1
          group by prix_horaire.id_prix_horaire) as Marcel
    Je ne sais pas si le "as" est obligatoire ou interdit ou optionel pour mySQL

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Merci beaucoup,

    parfois j'ai des menques dans ma t^te

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

Discussions similaires

  1. [XL-2010] Effectuer un tri sur un planning
    Par letroubadour dans le forum Excel
    Réponses: 1
    Dernier message: 14/01/2013, 18h48
  2. Réponses: 2
    Dernier message: 24/11/2012, 02h45
  3. Réponses: 2
    Dernier message: 15/12/2009, 17h45
  4. comment effectuer un tri sur une sous selection
    Par stephyugh dans le forum DB2
    Réponses: 4
    Dernier message: 18/10/2007, 08h33
  5. [MySQL 5] Double tri sur date et time
    Par titoine1978 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/06/2006, 19h46

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