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

SQL Oracle Discussion :

Structure requête SQL


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut Structure requête SQL
    Bonjour a tous,

    je cherche une syntaxe de requete permettant de d'ajouter à ma selection un champ particulier. Je m'expllique, j'ai une table Action qui continent les attribut nom, type, personne, date où date est la clé primaire,
    il est donc possible d'avoir une action identique a des moments différents, je souhaite avoir la date de début de l'action (min date) de la personne et la date de fin (max date) de cette même personne et ceci sur la même ligne, j'ai realiser cette requete mais j'obtiens a chaque fois deux lignes alors que je désie en avoir une seule merci de votre aide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DISTINCT ACTION.nom, ACTION.Type, ACTION.Date
    FROM ACTION
    WHERE (ACTION.Date=(SELECT MIN(ACTION.Date) FROM ACTION)
    OR ACTION.Date=(SELECT MAX(ACTION.Date) FROM ACTION)

    j'espére avoir été compréhensible aux quel cas je vous donne un exemple plus concret de ce que je souhaite obtenir

    resultat: paul, type1, 12/10/2009 12:03
    paul, type1, 12/10/2009 13:54

    résultat attendu: paul, type1, 12/10/2009 12:03, 12/10/2009,13:54


    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Peut-être cherchez-vous une requête de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT nom, Type,
             MIN(Date) AS Date_Min,
             MAX(Date) AS Date_Max
        FROM ACTION
    GROUP BY nom, Type

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut
    Merci de ta proposition, mais cela ne fonctionne pas car j'ai une contraintes sur les max et min, ce sont la date la plus eleve et la plus basse de ma personne effectuant l'activité, si je fais ta requete, j'obtiens la date max et min de toutes mes actions et non celle de la personne souhaité.

    En réfléchissant, je me suis demandé s'il n'étai pas nécessaire d'utiliser un LEFT OUTER JOIN, mais je n'arrive pas executer une requete avec cette expression, ma syntaxe n'est pas correcte, est ce que quelqu'un sait ce qui ne convient pas??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ACTION.nom, ACTION.type, ACTION.Date, 
    FROM ACTION
    LEFT OUTER JOIN CAL ON CAL.Date=ACTION.Date
    AND( (CAL.Date=(SELECT MIN(ACTION.Date) FROM ACTION WHERE CAL.Date=ACTION.Date)
    OR CAL.Date=(SELECT MAX(ACTION_Date) FROM ACTION WHERE CAL.Date=ACTION.Date)))


    Merci pour votre aide

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    C'est etonnant ce que tu dis car

    En 10G R1 sous Windaube
    et en 11G R1 Linux
    ca fonctionne pour l'exemple de Waldar i.e c'est bien le MAX e le MIN de chaque NOM !

    Code sql : 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
    21
    22
    23
    24
    25
    26
     
    > with
      2  action
      3  as
      4  (select 'TITI' nom, date '2008-01-12' dt , 'type1' type from dual union all
      5  select 'TATA' , date '2008-02-12'  , 'type1' type from dual union all
      6  select 'TUTU' , date '2008-03-12'  , 'type1' type from dual union all
      7  select 'TOTO' , date '2008-05-12'  , 'type1' type from dual union all
      8  select 'TITI' , date '2009-01-12'  , 'type1' type from dual union all
      9  select 'TATA' , date '2009-02-12'  , 'type1' type from dual union all
     10  select 'TUTU' , date '2010-03-12'  , 'type1' type from dual union all
     11  select 'TOTO' , date '2011-04-12'  , 'type1' type from dual union all
     12  select 'TITI' , date '2021-05-12'  , 'type1' type from dual  )
     13  SELECT nom, Type,
     14           MIN(Dt) AS Date_Min,
     15           MAX(Dt) AS Date_Max
     16      FROM ACTION
     17  GROUP BY nom, Type
     18  order by nom;
     
    NOM  TYPE  DATE_MIN  DATE_MAX
    ---- ----- --------- ---------
    TATA type1 12-FEB-08 12-FEB-09
    TITI type1 12-JAN-08 12-MAY-21
    TOTO type1 12-MAY-08 12-APR-11
    TUTU type1 12-MAR-08 12-MAR-10

    Avec une autre requête

    Code sql : 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
    21
    22
    23
    24
    25
    26
    27
     
     
     
      1  with
      2  actions
      3  as
      4  (select 'TITI' nom, date '2008-01-12' dt , 'type1' type from dual union all
      5  select 'TATA' , date '2008-02-12'  , 'type1' type from dual union all
      6  select 'TUTU' , date '2008-03-12'  , 'type1' type from dual union all
      7  select 'TOTO' , date '2008-05-12'  , 'type1' type from dual union all
      8  select 'TITI' , date '2009-01-12'  , 'type1' type from dual union all
      9  select 'TATA' , date '2009-02-12'  , 'type1' type from dual union all
     10  select 'TUTU' , date '2010-03-12'  , 'type1' type from dual union all
     11  select 'TOTO' , date '2011-04-12'  , 'type1' type from dual union all
     12  select 'TITI' , date '2021-05-12'  , 'type1' type from dual  )
     13  select distinct nom,
     14  first_value(dt) over  (partition by nom order by dt ) date_min ,
     15  first_value(dt) over  (partition by nom order by dt desc ) date_max from actions
     16* order by nom
    > /
     
    NOM  DATE_MIN  DATE_MAX
    ---- --------- ---------
    TATA 12-FEB-08 12-FEB-09
    TITI 12-JAN-08 12-MAY-21
    TOTO 12-MAY-08 12-APR-11
    TUTU 12-MAR-08 12-MAR-10

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 91
    Par défaut
    Merci de ton aide, ma requete focntionne correctement

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. Requête SQL pour récupérer la structure d'une table
    Par Emyleen dans le forum Développement
    Réponses: 2
    Dernier message: 10/09/2012, 16h57
  3. [MySQL] Requête SQL pour charger une structure récursive
    Par FMaz dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/07/2009, 05h00
  4. [Structure] Stocker des requêtes SQL
    Par clisson dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 05/12/2006, 13h45
  5. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38

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