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 :

Comparaison de date avec la date du système et récupération d'une ligne


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Comparaison de date avec la date du système et récupération d'une ligne
    Bonjour à tous,

    Je suis tout nouveau sur le site, voici mon problème :

    Tout d'abord, voici ma table


    13325 20/12/08 30/06/09 S7D2
    13325 16/05/14 31/08/16 6F2
    13325 01/07/09 15/05/14 6E2

    colonne 1 : matricule
    colonne 2 : date de début
    colonne 3: date de fin
    colonne 4 : affectation


    J'aimerais récupérer la dernière ligne car la date du système ( 14/05/2014 ) est comprise entre le 01/07/09 ( date de début) et le 15/05/14 ( date de fin) .

    Le Résultat de la requête serait :

    13325 01/07/09 15/05/14 6E2



    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 811
    Points
    30 811
    Par défaut
    Peux-tu nous montrer la requête que tu as commencée pour que nous t'aidions à l'améliorer ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Pour récupérer la date du système, est-ce bien SYSDATE ?

    ====> Voici 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
    SELECT DISTINCT 
    EMP.matricule, 
    ASS.date_deb,
    ASS.date_fin, 
    ORG.affectation 
     
    FROM EMP,ASS,ORG,TABLE_DE_FAIT 
     
    where  EMP.EMP_KEY=TABLE_DE_FAIT.EMP_KEY
    AND ASS.ASS_KEY =TABLE_DE_FAIT.ASS_KEY
    AND ORG.ORG_KEY = TABLE_DE_FAIT.ORG_KEY
     
    AND EMP.matricule='13325'
    ====> Résultat de la requête :

    13325 20/12/08 30/06/09 S7D2
    13325 16/05/14 31/08/16 6F2
    13325 01/07/09 15/05/14 6E2
    ====> je veux récupérer la ligne
    13325 01/07/09 15/05/14 6E2
    car nous sommes le 14/05/2014


    A la date du 16/05/2014, la ligne qui devrait ressortir est :
    13325 16/05/14 31/08/16 6F2

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    tu remarqueras que mes conditions de jointure ne sont pas optimales...mais si j'ai le résultat voulu c'est déjà un grand pas

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Points : 30
    Points
    30
    Par défaut
    si tes champs ASS.date_deb et ASS.date_fin sont bien au format DATE, voila ce que tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT 
    EMP.matricule, 
    ASS.date_deb,
    ASS.date_fin, 
    ORG.affectation 
    FROM EMP,ASS,ORG,TABLE_DE_FAIT 
    where EMP.EMP_KEY=TABLE_DE_FAIT.EMP_KEY
    AND ASS.ASS_KEY =TABLE_DE_FAIT.ASS_KEY
    AND ORG.ORG_KEY = TABLE_DE_FAIT.ORG_KEY
    AND EMP.matricule='13325'
    AND SYSDATE BETWEEN ASS.date_deb AND ASS.date_fin;

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    J'obtiens bien le résultat demandé. Merci pour votre aide.

    J'ai néanmoins quelques questions supplémentaires concernant cette requête :

    -Cette requête est-elle optimale ? dans le cas où elle ne serait pas optimale, est-il possible de l'optimiser et comment ?

    -Ces conditions de jointure permettent bien de récupérer toutes les lignes, n'est-ce pas ? Autrement dit je ne risquerais pas de perdre des lignes ?

    Merci pour vos retours.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    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 080
    Points : 30 811
    Points
    30 811
    Par défaut
    Si tu es certain que les identifiants des dimensions dans la table de faits sont bien présents dans les tables de dimensions et qu'ils sont toujours renseignés, tu ne risques pas de perdre de ligne.
    Dans le cas contraire, il serait préférable d'utiliser des jointures externes entre la table de faits et les dimensions.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je pense avoir eu toutes mes réponses.
    Merci pour votre aide et votre réactivité.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Suite à vos remarques d'hier, j'ai vérifié mes données et voici la conclusion : J'ai plus de lignes dans les tables ASS, ORG et EMP que dans ma table de fait.

    voici ma requête pour vérifier :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select 
    ORG.ORG_KEY
     from 
     ORG
      minus
     select 
     TABLE_FAIT.ORG_KEY
     from
      TABLE_FAIT

    J'ai donc plus de lignes dans ORG que dans la table de fait.
    Idem pour, ASS et EMP


    Comment puis-je modifier ma requête pour ne pas perdre de lignes ?


    Voici la requête à modifier :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT 
    EMP.matricule, 
    ASS.date_deb,
    ASS.date_fin, 
    ORG.affectation 
    FROM EMP,ASS,ORG,TABLE_DE_FAIT 
    WHERE EMP.EMP_KEY=TABLE_DE_FAIT.EMP_KEY
    AND ASS.ASS_KEY =TABLE_DE_FAIT.ASS_KEY
    AND ORG.ORG_KEY = TABLE_DE_FAIT.ORG_KEY
    AND EMP.matricule='13325'
    AND SYSDATE BETWEEN ASS.date_deb AND ASS.date_fin;

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Pour être plus précis, le minus m'a permi de conclure qu'il y avait des clés dans les tables (org, ass et emp) et non dans la table de fait.

    Donc à priori, si la clé n'est pas présente dans la table de fait alors la donnée ne remontera pas ?

    Pouvez-vous m'aider ?

  11. #11
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,

    un peu de lecture serai à ce stade conseillé : http://sqlpro.developpez.com/cours/sqlaz/jointures/

    Une fois ca compris, revenez si vous avez encore des questions

Discussions similaires

  1. Comparaison Date avec Dimension Date
    Par yoyo_le_landais dans le forum QlikView
    Réponses: 7
    Dernier message: 23/01/2013, 08h26
  2. Réponses: 5
    Dernier message: 20/11/2008, 11h20
  3. problème avec les dates différente de date système
    Par bernard VIALA dans le forum IHM
    Réponses: 3
    Dernier message: 15/11/2008, 08h55
  4. [MySQL] comparaison d'une date avec la date système
    Par kawther dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/12/2007, 03h05
  5. [Oracle] Comparaison d'une date avec la date du jour.
    Par mika0102 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2007, 11h52

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