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 :

Aide sur Une Requête


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    Par défaut Aide sur Une Requête
    salut
    J ai 3 champs (dateeffet) de type date dans 3 tables differentes , je veux selectionner le maximum entre ces trois champs et le nom de la table qui contient la plus grande valeur.
    comment faire?
    merci d'avance

  2. #2
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    - ça dépend grandement de ton SGBD
    - seul un admin pourra lancer ta requête (utilisation de la méta base)
    - ton modèle de donnée doit probablement être à revoir

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    Par défaut
    j utilise Oracle 10g
    je suis l administrateur de la base.
    merci de m aider a construire cette requete

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 493
    Points
    28 493
    Par défaut
    Pourriez-vous nous présenter une ébauche de la requête que vous tentez de mettre au point ainsi que le structure des tables en jeu.
    Cela sera plus facile pour vous aider à la faire évoluer.
    Règles du forum Langage SQL à lire par tous

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut Une solution.
    salut,

    sous oracle la requette suivante devrais marcher nickel!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select nomtable, max(dateeffet) from (
       select "table1" nomtable, dateeffet from table1 where XXX
       union all
       select "table1", dateeffet from table1 where XXX
       union all
       select "table1", dateeffet from table1 where XXX
    ) group by nomtable

    P.

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut oops...
    oops, petit correctif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT nomtable, max(dateeffet) FROM (
       SELECT "table1" nomtable, dateeffet FROM table1 WHERE XXX
       union ALL
       SELECT "table2", dateeffet FROM table2 WHERE XXX
       union ALL
       SELECT "table3", dateeffet FROM table3 WHERE XXX
    ) group by nomtable

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    Par défaut
    j ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT nomtable, max(dateeffet) FROM (
       SELECT 'CTMS_MVDIVISION' nomtable, dateeffet FROM CTMS_MVDIVISION WHERE matricule=x
       union ALL
       SELECT 'CTMS_MVSERVICES' nomtable, dateeffet FROM CTMS_MVSERVICES WHERE matricule=x
       union ALL
       SELECT 'CTMS_MVUNITE' nomtable, dateeffet FROM CTMS_MVUNITE WHERE matricule=x)
    group by nomtable
    et le resultat est :
    NOMTABLE MAX(DATE
    CTMS_MVUNITE 01/11/07
    CTMS_MVSERVICES 01/10/07
    CTMS_MVDIVISION 12/07/06

    Mais moi je veux afficher uniquement la premiere ligne
    CTMS_MVUNITE 01/11/07
    Comment faire?

  8. #8
    Membre éprouvé Avatar de Mathusalem
    Profil pro
    IT moa
    Inscrit en
    Décembre 2003
    Messages
    1 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : IT moa

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 008
    Points : 1 067
    Points
    1 067
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    having max(dateeffet) = dateeffet

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2007
    Messages : 187
    Points : 110
    Points
    110
    Par défaut
    en effet...
    j'avais oublié le HAVING...

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    Par défaut
    lorsque je fais Having max(dateeffet)=dateeffet
    il me dit
    dateeffet N'est pas une expression GROUP BY

  11. #11
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    Par défaut
    encore pas de reponse???

  12. #12
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut On adapte...
    Et comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT nomtable, max(max_date) FROM (
       SELECT 'CTMS_MVDIVISION' nomtable, max(dateeffet) max_date
           FROM CTMS_MVDIVISION WHERE matricule=x 
           group by nomtable
       union ALL
       SELECT 'CTMS_MVSERVICES' nomtable, max(dateeffet) max_date
           FROM CTMS_MVSERVICES WHERE matricule=x 
           group by nomtable
       union ALL
       SELECT 'CTMS_MVUNITE' nomtable, max(dateeffet) max_date
           FROM CTMS_MVUNITE WHERE matricule=x 
           group by nomtable)
    GROUP BY nomtable
    [EDIT]
    Oups, désolé, c'est n'importe quoi, ça ne marche pas... Je continue de chercher
    [/EDIT]

  13. #13
    Membre régulier
    Inscrit en
    Octobre 2005
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 279
    Points : 80
    Points
    80
    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 nomtable, max(dateeffet) FROM (
       SELECT 'CTMS_MVDIVISION' nomtable, dateeffet FROM CTMS_MVDIVISION WHERE matricule=x
       union ALL
       SELECT 'CTMS_MVSERVICES' nomtable, dateeffet FROM CTMS_MVSERVICES WHERE matricule=x
       union ALL
       SELECT 'CTMS_MVUNITE' nomtable, dateeffet FROM CTMS_MVUNITE WHERE matricule=x)
    HAVING max(dateeffet) = (select max(dateeffet) from (
       SELECT  dateeffet FROM CTMS_MVDIVISION WHERE matricule=x
       union ALL
       SELECT dateeffet FROM CTMS_MVSERVICES WHERE matricule=x
       union ALL
       SELECT dateeffet FROM CTMS_MVUNITE WHERE matricule=x))
    GROUP BY nomtable
    comme ca ca marche

  14. #14
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Ha ben chuis grillé...

    Bon j'ai pas tout à fait la même, donc je mets aussi ma requête
    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
    16
    17
    18
    19
    20
    select nomtable, dateeffet from
    (select 'CTMS_MVDIVISION' nomtable, dateeffet 
       FROM CTMS_MVDIVISION WHERE matricule=x
     union ALL
     SELECT 'CTMS_MVSERVICES' nomtable, dateeffet
       FROM CTMS_MVSERVICES WHERE matricule=x
     union ALL
     SELECT 'CTMS_MVUNITE' nomtable, dateeffet 
       FROM CTMS_MVUNITE WHERE matricule=x
    )
    where dateeffet=(select max(dateffet) from
     (select dateeffet 
       FROM CTMS_MVDIVISION WHERE matricule=x
     union ALL
     SELECT dateeffet
       FROM CTMS_MVSERVICES WHERE matricule=x
     union ALL
     SELECT dateeffet 
       FROM CTMS_MVUNITE WHERE matricule=x
    ))

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

Discussions similaires

  1. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 17h26
  2. Réponses: 1
    Dernier message: 03/08/2005, 12h41
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 11h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 12h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 11h26

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