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

Oracle Discussion :

Oracle 9.2.0.7 - Jointure externe sur un between


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut Oracle 9.2.0.7 - Jointure externe sur un between
    Bonjour,

    J'espère que mon message sera clair car il n'est pas facile à décrire et je ne peux pas mettre de code (il est trop immonde)

    Voilà je voudrais faire une jointure externe sur une table à travers un between. Ma date doit être contenue entre deux autres dates mais ce n'est pas obligatoire (si la jointure ne retourne rien je veux quand même récupérer mes données des autres tables).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FACTURE_PERIODE.DATEDEBUT  BETWEEN HORAIRE.DEBUT AND HORAIRE.FIN
    J'espère que vous avez compris mon soucis et que vous pourrez m'aider.

    Un grand merci d'avance.

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ... 
    from facture left join horaire
    on (FACTURE_PERIODE.DATEDEBUT  BETWEEN HORAIRE.DEBUT AND HORAIRE.FIN)

  3. #3
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Je n'ai pas compris la réponse :
    qu'est ce que la table periode ?
    où dois-je mettre ce code dans mon where ou à la suite du from ?

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    dans ton from

    sinon tu peux utiliser la syntaxe Oracle8 where datedebut(+) between db and fn

  5. #5
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    J'ai essayé ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FACTURE_PERIODE.DATEDEBUT  BETWEEN HORAIRE.DEBUT(+) AND HORAIRE.FIN(+)
    puisque c'est dans la table horaire où il manque des enregistrements
    mais ca ne change rien

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    with facture_periode as (select 1 id, date '2000-01-01' datedebut from dual union all select 2,date '2002-01-01' from dual),
    horaire as (select date '2001-01-01' debut, date '2003-01-01' fin from dual)
    -- debut de la requête
    select * from facture_periode left join horaire on (datedebut between debut and fin);
     
            ID DATEDEBUT DEBUT     FIN
    ---------- --------- --------- ---------
             1 01-JAN-00
             2 01-JAN-02 01-JAN-01 01-JAN-03
    avec la syntaxe Oracle8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    with facture_periode as (select 1 id, date '2000-01-01' datedebut from dual union all select 2,date '2002-01-01' from dual),
    horaire as (select date '2001-01-01' debut, date '2003-01-01' fin from dual)
    -- debut du select
    select * from facture_periode,horaire where datedebut between debut  (+) and fin (+)
     
            ID DATEDEBUT DEBUT     FIN
    ---------- --------- --------- ---------
             1 01-JAN-00
             2 01-JAN-02 01-JAN-01 01-JAN-03

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

Discussions similaires

  1. ORACLE 8.1.7 pb Jointure externe
    Par gg2vig dans le forum Oracle
    Réponses: 3
    Dernier message: 18/09/2006, 14h09
  2. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42
  3. [Oracle] Résoudre un problème de jointure externe
    Par nadass dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/06/2006, 09h10
  4. Jointure Externe sur base ACCESS par Query Excel
    Par marie10 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/03/2006, 11h20
  5. Jointure externe sur 2 tables
    Par Danae dans le forum Langage SQL
    Réponses: 11
    Dernier message: 19/07/2005, 15h37

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