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

Oracle Discussion :

Requete Sql


Sujet :

Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut Requete Sql

    Je cherche à afficher comme résultat, la direction qui a le plus grand nombre de jours de formation. Ici je trouve paris, mais comment faire afficher par la requête PARIS uniquement ?

    J'ai fait des essais avec having, mais cela ne marche pas

    select distinct d.direction,st.duree
    from directions d,stagiaires s,stages st, participations p
    where d.no_direction=s.direction_no_direction
    and s.no_stagiaire=p.stag_no_stagiaire
    and p.stage_no_stage=st.no_stage
    group by d.direction,st.duree
    order by direction ;


    DIRECTION DUREE

    BORDEAUX 5
    BORDEAUX 1
    NANTES 2
    TOULON 2
    CHAMPAGNE-ARDENNE 5
    LYON 2
    LYON 1
    PARIS 1
    PARIS 2
    PARIS 5
    PARIS 3
    PARIS 4

    Merci pour votre aide

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Essayez avec une inline view et une fonction analytique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    select direction, sum(duree) over (partition by direction) sum_duree from
    (
     
    select distinct d.direction,st.duree
    from directions d,stagiaires s,stages st, participations p
    where d.no_direction=s.direction_no_direction
    and s.no_stagiaire=p.stag_no_stagiaire
    and p.stage_no_stage=st.no_stage
    group by d.direction,st.duree
    order by direction 
     
    )
    Pourquoi faut-il afficher que Paris ? Parce que la somme des durées est maximale pour cette valeur de direction ?

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Essaie :
    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
     
    select direction, sum_duree
    from (select d.direction,sum (st.duree) sum_duree
         from directions d,stagiaires s,stages st, participations p
         where d.no_direction=s.direction_no_direction
         and s.no_stagiaire=p.stag_no_stagiaire
         and p.stage_no_stage=st.no_stage
         group by d.direction)
    where sum_duree = (select max (duree)
                       from (select d.direction,sum (st.duree) sum_duree
                             from directions d,stagiaires s,stages st, participations p
                             where d.no_direction=s.direction_no_direction
                             and s.no_stagiaire=p.stag_no_stagiaire
                             and p.stage_no_stage=st.no_stage
                             goup by d.direction))
    Si tu peux créer une vue cela allègera la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create view duree_total as
       select d.direction,sum (st.duree) sum_duree
       from directions d,stagiaires s,stages st, participations p
       where d.no_direction=s.direction_no_direction
       and s.no_stagiaire=p.stag_no_stagiaire
       and p.stage_no_stage=st.no_stage
       group by d.direction
    et la requete devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select direction, sum_duree
    from total_duree
    where sum_duree = (select max (duree)
                       from total_duree)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut
    Il n'est pas possible d'utiliser having ?


    [code]
    Merci beaucoup, mais lorsque le lance la requête ci-dessous, j'ai un message "parenthèse de droite absente ?"

    Citation Envoyé par plaineR
    Essaie :
    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
     
    select direction, sum_duree
    from (select d.direction,sum (st.duree) sum_duree
         from directions d,stagiaires s,stages st, participations p
         where d.no_direction=s.direction_no_direction
         and s.no_stagiaire=p.stag_no_stagiaire
         and p.stage_no_stage=st.no_stage
         group by d.direction)
    where sum_duree = (select max (duree)
                       from (select d.direction,sum (st.duree) sum_duree
                             from directions d,stagiaires s,stages st, participations p
                             where d.no_direction=s.direction_no_direction
                             and s.no_stagiaire=p.stag_no_stagiaire
                             and p.stage_no_stage=st.no_stage
                             goup by d.direction))
    Si tu peux créer une vue cela allègera la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    create view duree_total as
       select d.direction,sum (st.duree) sum_duree
       from directions d,stagiaires s,stages st, participations p
       where d.no_direction=s.direction_no_direction
       and s.no_stagiaire=p.stag_no_stagiaire
       and p.stage_no_stage=st.no_stage
       group by d.direction
    et la requete devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select direction, sum_duree
    from total_duree
    where sum_duree = (select max (duree)
                       from total_duree)

  5. #5
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Petite erreur de syntaxe (que tu aurais pu corriger par toi même ), remplace :
    par

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut
    J'ai trouvé le group, merci, mais j'ai maintenant ORA-00904: "DUREE" : identificateur non valide

    Citation Envoyé par plaineR
    Petite erreur de syntaxe (que tu aurais pu corriger par toi même ), remplace :
    par

  7. #7
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select direction, sum_duree
    from (select d.direction,sum (st.duree) sum_duree
         from directions d,stagiaires s,stages st, participations p
         where d.no_direction=s.direction_no_direction
         and s.no_stagiaire=p.stag_no_stagiaire
         and p.stage_no_stage=st.no_stage
         group by d.direction)
    where sum_duree = (select max (sum_duree)
                       from (select sum (st.duree) sum_duree
                             from directions d,stagiaires s,stages st, participations p
                             where d.no_direction=s.direction_no_direction
                             and s.no_stagiaire=p.stag_no_stagiaire
                             and p.stage_no_stage=st.no_stage
                             group by d.direction))

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 98
    Points : 47
    Points
    47
    Par défaut
    C'est bon , vous êtes vraiment un EXPERTISSOMO DE 1ER CLASSE
    Merci

    Citation Envoyé par plaineR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    select direction, sum_duree
    from (select d.direction,sum (st.duree) sum_duree
         from directions d,stagiaires s,stages st, participations p
         where d.no_direction=s.direction_no_direction
         and s.no_stagiaire=p.stag_no_stagiaire
         and p.stage_no_stage=st.no_stage
         group by d.direction)
    where sum_duree = (select max (sum_duree)
                       from (select sum (st.duree) sum_duree
                             from directions d,stagiaires s,stages st, participations p
                             where d.no_direction=s.direction_no_direction
                             and s.no_stagiaire=p.stag_no_stagiaire
                             and p.stage_no_stage=st.no_stage
                             group by d.direction))

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 10h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 17h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 17h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 12h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 14h43

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