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 :

Selectionner la date la plus proche


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Selectionner la date la plus proche
    bonjour,

    je n'arrive pas à faire une requette.. c'est en PL/SQL sous oracle 9

    j'ai une table TAR_DEVIS et une table TAR_GTG_ACTION
    la table TAR_DEVIS prends des devis, et la table TAR_GTG_ACTION enregistre
    les action faites sur les devis au cours du temps.

    voila un select sur les tables :

    GTG_ID ACTION DEVIS_ID ACTION_DATE
    31103 1 101 10/08/2007 11:04:55
    31103 3 101 10/08/2007 16:46:15
    31103 2 101 10/08/2007 17:02:16
    31103 5 101 10/08/2007 17:02:31
    31103 6 101 10/08/2007 17:02:39
    31103 7 101 10/08/2007 17:19:32
    31103 2 101 10/08/2007 17:19:39
    31103 8 101 10/08/2007 17:19:46
    31103 2 101 10/08/2007 17:25:53
    31103 3 101 13/08/2007 09:25:05
    31103 5 101 13/08/2007 09:25:10
    31103 8 101 13/08/2007 09:25:16 ***
    31103 1 102 13/08/2007 09:27:27
    31103 2 102 13/08/2007 09:27:34
    31103 3 102 13/08/2007 09:27:43
    31103 5 102 13/08/2007 09:27:49
    31103 8 102 13/08/2007 09:27:52 ***
    31103 1 103 14/08/2007 10:25:02
    31103 2 103 14/08/2007 10:25:48 ***
    je voudrai faire une requette qui me donne pour chaque DEVIS_ID l'action en cours, et donc l'action avec la date la plus proche de nous.

    j'ai réussi a faire une requette pour récuperer l'action en cour en fonction de DEVIS_ID mais je n'arive pas a l'adapter pour avoir un select qui me renvoie seulement les ligne marquer de trois asterix.

    voila la requette que j'ai faite pour le moment pour récup l'action en cour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin
    select  max(a.gtg_id) KEEP (dense_rank LAST ORDER BY a.action_date),
    max(a.action) KEEP (dense_rank LAST ORDER BY a.action_date) into :my_grille, :my_action 
    from tar_gtg_action a, gtg t
    WHERE a.devis_id = :p_devis_id 
    AND t.gtg_etat IN(1,2,3,4,5);
    end;

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    C'est quoi la condition pour avoir droit aux astérisques ?

    T'as essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  a.gtg_id,a.action,max(a.action_date) into :my_grille, :my_action , :dummy
    from tar_gtg_action a, gtg t
    WHERE a.devis_id = :p_devis_id 
    AND t.gtg_etat IN(1,2,3,4,5)
    GROUP BY a.gtg_id,a.action;

  3. #3
    Membre chevronné Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Points : 2 071
    Points
    2 071
    Par défaut
    Citation Envoyé par goodboy
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin
    select  max(a.gtg_id) KEEP (dense_rank LAST ORDER BY a.action_date),
    max(a.action) KEEP (dense_rank LAST ORDER BY a.action_date) into :my_grille, :my_action 
    from tar_gtg_action a, gtg t
    WHERE a.devis_id = :p_devis_id 
    AND t.gtg_etat IN(1,2,3,4,5);
    end;
    Il manque la jointure entre tar_gtg_action et gtg

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    produit cartésien... malheur de malheur

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    j'ai trouvé la réponse un peut plus bas dans le forum..

    (http://www.developpez.net/forums/sho...d.php?t=394255)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select DISTINCT 
    first_value(a.action_date) OVER (PARTITION BY dev.devis_id ORDER BY a.action_date DESC) date_time,
    first_value(dev.devis_id) OVER (PARTITION BY dev.devis_id ORDER BY a.action_date DESC) devis_id 
    From tar_devis dev, tiers t, tar_gtg_action a
    WHERE dev.tiers_id = t.tiers_id
    AND a.devis_id = dev.devis_id
    le problème était identique..

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

Discussions similaires

  1. Requete:le moyen de selectionner la date la plus recente
    Par vincefop dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 11/08/2008, 11h05
  2. Date au plus proche
    Par mitchb dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/07/2008, 12h31
  3. [FireBird] date la plus proche
    Par gudul dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/05/2006, 10h09
  4. [Oracle] selectionner la valeur la plus proche
    Par jaoued dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/03/2006, 22h15
  5. Selectionner la date la plus récente
    Par Maludi dans le forum Access
    Réponses: 2
    Dernier message: 06/02/2006, 12h56

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