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 :

Une requête avec un Max sur 2 champs


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut Une requête avec un Max sur 2 champs
    Bonjour,
    Pourriez-vous m'aider à résoudre ce problème de Sql?

    Soit les 3 tables : Reunion / Reunion_Affaire / Affaire

    REUNION(ID_REUNION,DATE_REUNION,HEURE_REUNION)
    REUNION_AFFAIRE (NR_REUNION,NR_AFFAIRE)
    AFFAIRE(ID_AFFAIRE )

    A savoir: Dans une réunion on peut traiter plusieurs affaires.
    Une affaire peut-être traité à l'occassion de plusieurs réunions différentes.

    Je voudrai afficher la date et l'heure de la réunion la plus récente pour une affaire donnée!

    Pour le moment je n'arrive à afficher que la date! Je ne sais pas comment afficher la date et l'heure!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT MAX(DATE_REUNION) FROM REUNION WHERE ID_REUNION IN(
    SELECT ID_REUNION
    FROM REUNION WHERE ID_REUNION IN (SELECT NR_REUNION FROM REUNION_AFFAIRE WHERE NR_AFFAIRE =3))
    [EDIT]
    Simplification de la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT MAX(DATE_REUNION) FROM REUNION WHERE ID_REUNION IN(
    (SELECT NR_REUNION FROM REUNION_AFFAIRE WHERE NR_AFFAIRE =3))


    D'avance merci pour votre aide!

  2. #2
    Membre averti Avatar de Chatbour
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2006
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2006
    Messages : 431
    Points : 305
    Points
    305
    Par défaut
    Salut

    j'ai une idée :

    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 DATE_REUNION, max(heure_runion)
    FROM   REUNION
    WHERE  ID_REUNION IN (SELECT NR_REUNION 
                           FROM    REUNION_AFFAIRE 
                           WHERE  NR_AFFAIRE =3
                          )
    and      date_reunion = (select max(date_reunion)
                             from   reunion
                             where id_reunion IN (SELECT NR_REUNION 
                                                  FROM    REUNION_AFFAIRE 
                                                  WHERE  NR_AFFAIRE =3
                                                  )
                             )
    group by date_reunion
    je ne l'ai pas testé, en plus ça ne semble pas être optimisée

  3. #3
    J1
    J1 est déconnecté
    Membre averti Avatar de J1
    Inscrit en
    Mai 2004
    Messages
    321
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 321
    Points : 335
    Points
    335
    Par défaut
    Bonjour,

    sinon, un SELECT TOP devrait aussi faire l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT TOP 1 R.date_reunion, R.heure_reunion
    FROM reunion_affaire AS RA
    INNER JOIN reunion AS R
    ON R.id_reunion = RA.nr_reunion
    WHERE RA.nr_affaire = 3
    ORDER BY R.date_reunion DESC, R.heure_reunion DESC, R.id_reunion

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    Etrangement, en exécutant vos requêtes aucunes lignes n'étaient renvoyées!

    En m'inspirant des réponses proposées j'ai trouvé la requête suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT TOP 1 DATE_REUNION,heure_REUNION 
    FROM REUNION WHERE ID_REUNION IN
    (SELECT NR_AFFAIRE FROM REUNION_AFFAIRE WHERE NR_AFFAIRE = '3' )
    ORDER BY DATE_REUNION DESC,heure_REUNION DESC
    Et pour ceux qui serait comme moi encore avec une vieille version d'oracle qui ne reconnait pas le TOP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * FROM ( DATE_REUNION,heure_REUNION 
    FROM REUNION WHERE ID_REUNION IN
    (SELECT NR_AFFAIRE FROM REUNION_AFFAIRE WHERE NR_AFFAIRE = '3' )
    ORDER BY DATE_REUNION DESC,heure_REUNION DESC )
    WHERE ROWNUM <= 1
    Un grand merci de m'avoir aidé les gars!

    Vivement que je passe à la version 11g d'Oracle!

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 29
    Points
    29
    Par défaut
    J1 a tout à fait raison il est possible d'arriver au même résultat avec une seule requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT TOP 1 R.DATE_AUDIENCE DESC,R.HEURE_AUDIENCE
    FROM REUNION R, REUNION_AFFAIRE RA 
    WHERE R.ID_REUNION = RA.NR_REUNION AND RA.NR_AFFAIRE = '3'
    ORDER BY R.DATE_AUDIENCE DESC,R.HEURE_AUDIENCE DESC
    Encore merci!

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

Discussions similaires

  1. Besoin d'aide sur une requête avec un MAX()
    Par lcristin dans le forum Langage SQL
    Réponses: 5
    Dernier message: 05/03/2013, 14h57
  2. Selectionner une ligne avec un max sur plusieurs critères
    Par achestyx dans le forum Développement
    Réponses: 2
    Dernier message: 31/03/2011, 10h53
  3. [AC-2003] Renommer une colonne d'une requête avec la valeur d'un champ
    Par constalp dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 11/08/2010, 12h03
  4. Requête avec select max sur 3 tables
    Par Tintinduweb dans le forum Requêtes
    Réponses: 1
    Dernier message: 16/03/2010, 05h49
  5. une requête avec 2 count sur la même table
    Par epeichette dans le forum Requêtes
    Réponses: 11
    Dernier message: 30/06/2009, 09h19

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