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 :

Requête SQL : comparaison de deux dates dans deux tables distinctes


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut Requête SQL : comparaison de deux dates dans deux tables distinctes
    Bonjour,

    Je fais face à un problème que je pense complexe... en fait, je ne trouve pas de solution, me demandant s'il y en a une.

    J'ai deux tables ADRESSEENVOI et ADRESSEFACTURATION qui comportent respectivement les adresses d'envoi de marchandises et les adresses de facturation. Ces deux tables peuvent être jointes par l'attribut IDCLIENT, clé étrangère fournie par une autre table qui n'entre pas ici dans la problématique.

    Chaque adresse des deux tables est définie par plusieurs attributs dont :
    - le code marchandise (CDMARCH)
    - la date d'effet (DTEFFET)
    - la date d'invalidation (DTINVALIDATION)

    Un client donnant une adresse valide indique un CDMARCH. Le système génère une ADRESSEENVOI ou une ADRESSEFACTURATION, et initie la DTEFFET à la date du jour et la DTINVALIDATION à NULL.

    Un client peut demander de retirer une telle adresse, auquel cas la DTINVALIDATION est remplie à la date du traitement.

    Pour un même CDMARCH, un client peut avoir plusieurs adresses valides (bonjour la gestion !), c'est ce qui cause la difficulté. Car il me faut dans ma requête prendre la plus récente.

    Il m'est demandé de fournir les (IDCLIENT, CDMARCH) dont la date l'ADRESSEENVOI la plus récente soit plus récente que la DATEFACTURATION (donc les adresses avec DTINVALIDATION = NULL).

    J'espère être clair dans ce que je cherche.

    En outre je cherche à faire un regroupement par CDMARCH et sélectionner la date la plus jeune dans chaque table pour comparer ensuite.

    Je ne sais pas ce que la direction fait d'une telle requête, mais elle le veut avant la fin de cette présente semaine...

    Si quelqu'un pouvait m'aider, je l'en remercie vivement d'avance. Si jamais c'est impossible, je n'aurais d'autre choix que de le faire en Java/Hibernate.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Quel est votre SGBD ?

    Quelle requête avez-vous commencé à écrire ?
    Elle n'est pas triviale mais pas difficile non plus.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Je suis en Oracle 10g.

    La première requête que j'ai faite tourne depuis environ 7 heures et n'a rien donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT E.IDOCFI, E.CDOBLIG
    FROM ADRESSEENVOI E, ADRESSEFACTURATION F
    WHERE
    E.IDCLIENT = F.IDCLIENT AND
    E.DTINVALIDATION IS NULL AND
    F.DTINVALIDATION IS NULL AND
    E.CDMARCH = F.CDMARCH AND
    (
       (SELECT MAX(E.DTEFFET) FROM ADRESSEENVOI E1
       WHERE E1.IDCLIENT = E.IDCLIENT AND E1.CDOBLIG = E.CDOBLIG) > 
       (SELECT MAX(F.DTEFFET) FROM ADRESSEFACTURATION F1
       WHERE F1.IDCLIENT = F.IDCLIENT AND F1.CDOBLIG = F.CDOBLIG)
    )
    Les deux tables contiennent quelque chose comme 600000 instances chacune. J'ai bien conscience que la requête formulée est certainement incomplète et naïve, sans aucune optimalité.

    Merci de votre aide.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Le select ne correspond pas vraiment à votre expression de besoin.
    Quels sont les index et clefs présents sur les deux tables ?

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Pour trouver l'adresse valide la plus récente il serait beaucoup plus efficace de faire un ROW_NUMBER() OVER(ORDER BY E.DTEFFET DESC) AS N puis de filtrer sur N = 1.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Le select ne correspond pas vraiment à votre expression de besoin.
    Quels sont les index et clefs présents sur les deux tables ?
    C'est très probable que cela ne corresponde pas car mon niveau en SQL est très faible. La seule personne susceptible de m'aider est partie depuis plusieurs mois et n'a pas encore été remplacée. Mais revenons aux faits.

    Chacune des tables contient deux clés étrangères :
    IDCLIENT
    IDADRTOPO

    Cette seconde clé permet de coder une adresse géographique pour déterminer des villes distinctes partageant le même nom, comme par exemple Paris.

    Quant aux index, la description sous TOAD m'en indique quatre pour ADRESSEENVOI:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IX_ADE_DTMAJ_CDOBLIG column DTMAJ
    IX_ADE_DTMAJ_CDOBLIG column CDMARCH
    IX_AD_IDCLIENT_DTEFFET column IDCLIENT
    IX_AD_IDCLIENT_DTEFFET column DTEFFET
    Cinq index pour ADRESSEFACTURATION :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IX_ADF_DTMAJ_CDMARCH column DTMAJ
    IX_ADF_DTMAJ_CDMARCH column CDMARCH
    IX_ADF_IDADRTOPO column IDADRTOPO
    IX_ADF_IDCLIENT_DTEFFET column IDCLIENT
    IX_ADF_IDCLIENT_DTEFFET column DTEFFET
    Est-ce que cela vous convient ?

    Merci par avance.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Pour trouver l'adresse valide la plus récente il serait beaucoup plus efficace de faire un ROW_NUMBER() OVER(ORDER BY E.DTEFFET DESC) AS N puis de filtrer sur N = 1.

    A +
    Bonjour,

    Merci pour ce conseil, je vais lire la doc pour utiliser ROW_NUMBER.

    En effet, j'ai un niveau scolaire en SQL... et donc à part des SELECT, UPDATE et INSERT "basiques", je ne sais pas faire grand chose.

    Bonne journée

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Postez le DDL de vos tables si vous voulez plus d'aide : http://www.developpez.net/forums/a69...gage-sql-lire/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 162
    Points : 90
    Points
    90
    Par défaut
    Je pense que le DDL demandé doit être ceci :

    La première table :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    CREATE TABLE ADRESSEENVOI
    (
      IDCLIENT          NUMBER(12)                  NOT NULL,
      IDADRTOPO         NUMBER(12)                  NOT NULL,
      CDMARCH           VARCHAR2(10 CHAR)           NOT NULL,
      DTEFFET           DATE                        NOT NULL,
      DTMAJ             DATE                        NOT NULL,
      DTMAJAPPLISOURCE  DATE                        DEFAULT NULL,
      DTEFFETNPAI       DATE                        DEFAULT NULL,
      ONFIGEE           NUMBER(1),
      DTINVALIDATION    DATE                        DEFAULT NULL,
      CDORIGINE         VARCHAR2(10 CHAR),
      CDPILOTECREATEUR  VARCHAR2(10 BYTE)
    )
    TABLESPACE OCFI_D_L
    PCTUSED    0
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    LOGGING
    PARTITION BY HASH (IDCLIENT)
      PARTITIONS 256
      STORE IN (OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L)
    NOCACHE
    NOPARALLEL
    MONITORING;
     
     
    CREATE INDEX IX_ADE_DTMAJ_CDMARCH ON ADRESSEENVOI
    (DTMAJ, CDMARCH)
    NOLOGGING
    TABLESPACE OCFI_X_L
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          4M
                NEXT             4M
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX IX_ADE_IDCLIENT_DTEFFET ON ADRESSEENVOI
    (IDCLIENT, DTEFFET)
      TABLESPACE OCFI_X_L
      INITRANS   2
      MAXTRANS   255
    NOLOGGING
    LOCAL STORE IN (OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L, OCFI_X_L)
    NOPARALLEL;
     
     
    CREATE SYNONYM SPT_OCFI.ADRESSEENVOI FOR ADRESSEENVOI;
     
     
    CREATE SYNONYM CONSULT_OCFI.ADRESSEENVOI FOR ADRESSEENVOI;
     
     
    CREATE SYNONYM APPLI_OCFI.ADRESSEENVOI FOR ADRESSEENVOI;
     
     
    ALTER TABLE ADRESSEENVOI ADD (
      CONSTRAINT FK_ADE_ADT_IDADRTOPO FOREIGN KEY (IDADRTOPO) 
        REFERENCES ADRTOPO (IDADRTOPO));
     
    ALTER TABLE ADRESSEENVOI ADD (
      CONSTRAINT FK_ADE_OCFI_IDCLIENT FOREIGN KEY (IDCLIENT) 
        REFERENCES OCFI (IDCLIENT));
     
     
    GRANT DELETE, INSERT, SELECT, UPDATE ON  ADRESSEENVOI TO APPLI;
     
    GRANT SELECT ON  ADRESSEENVOI TO CONSULT;
     
    GRANT DELETE, INSERT, SELECT, UPDATE ON  ADRESSEENVOI TO SPT_OCFI;
    Et la seconde table, ADRESSEFACTURATION

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
     
    CREATE TABLE ADRESSEFACTURATION
    (
      IDCLIENT          NUMBER(12)                  NOT NULL,
      IDADRTOPO         NUMBER(12)                  NOT NULL,
      CDMARCH           VARCHAR2(10 CHAR)           NOT NULL,
      DTEFFET           DATE                        NOT NULL,
      DTMAJ             DATE                        NOT NULL,
      DTMAJAPPLISOURCE  DATE                        DEFAULT NULL,
      DTINVALIDATION    DATE                        DEFAULT NULL,
      CDORIGINE         VARCHAR2(10 CHAR),
      CDPILOTECREATEUR  VARCHAR2(10 BYTE)
    )
    TABLESPACE OCFI_D_L
    PCTUSED    0
    PCTFREE    10
    INITRANS   1
    MAXTRANS   255
    LOGGING
    PARTITION BY HASH (IDCLIENT)
      PARTITIONS 256
      STORE IN (OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L, OCFI_D_L)
    NOCACHE
    NOPARALLEL
    MONITORING;
     
     
    CREATE INDEX IX_ADF_DTMAJ_CDMARCH ON ADRESSEFACTURATION
    (DTMAJ, CDMARCH)
    NOLOGGING
    TABLESPACE OCFI_X_L
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          4M
                NEXT             4M
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX IX_ADF_IDADRTOPO ON ADRESSEFACTURATION
    (IDADRTOPO)
    NOLOGGING
    TABLESPACE OCFI_X_L
    PCTFREE    10
    INITRANS   2
    MAXTRANS   255
    STORAGE    (
                INITIAL          4M
                NEXT             4M
                MINEXTENTS       1
                MAXEXTENTS       2147483645
                PCTINCREASE      0
                BUFFER_POOL      DEFAULT
               )
    NOPARALLEL;
     
     
    CREATE INDEX IX_ADF_IDCLIENT_DTEFFET ON ADRESSEFACTURATION
    (IDCLIENT, DTEFFET)
      TABLESPACE OCFI_X_L
      INITRANS   2
      MAXTRANS   255
    NOLOGGING
    GLOBAL PARTITION BY RANGE (IDCLIENT) (  
      PARTITION
        TABLESPACE OCFI_X_L
    )
    NOPARALLEL;
     
     
    CREATE SYNONYM SPT_OCFI.ADRESSEFACTURATION FOR ADRESSEFACTURATION;
     
     
    CREATE SYNONYM CONSULT_OCFI.ADRESSEFACTURATION FOR ADRESSEFACTURATION;
     
     
    CREATE SYNONYM APPLI_OCFI.ADRESSEFACTURATION FOR ADRESSEFACTURATION;
     
     
    ALTER TABLE ADRESSEFACTURATION ADD (
      CONSTRAINT FK_ADF_ADT_IDADRTOPO FOREIGN KEY (IDADRTOPO) 
        REFERENCES ADRTOPO (IDADRTOPO));
     
    ALTER TABLE ADRESSEFACTURATION ADD (
      CONSTRAINT FK_ADF_OCFI_IDCLIENT FOREIGN KEY (IDCLIENT) 
        REFERENCES OCFI (IDCLIENT));
     
     
    GRANT DELETE, INSERT, SELECT, UPDATE ON  ADRESSEFACTURATION TO APPLI;
     
    GRANT SELECT ON  ADRESSEFACTURATION TO CONSULT;
     
    GRANT DELETE, INSERT, SELECT, UPDATE ON  ADRESSEFACTURATION TO SPT_OCFI;
    J'espère que cela conviendra.

Discussions similaires

  1. Requête sql server pour calculer moyenne entre deux dates
    Par JérômeKGS dans le forum Développement
    Réponses: 2
    Dernier message: 17/04/2015, 12h04
  2. [TOS 3.2.0] Date between deux dates dans un tmap
    Par atb dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 04/11/2009, 16h06
  3. [Requête/SQL]ajouter un champ calculé dans une table
    Par zougna dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 17/04/2007, 19h09
  4. Comparaison entre deux dates dans une table
    Par Biskot75 dans le forum Access
    Réponses: 6
    Dernier message: 19/09/2006, 11h16
  5. DateDiff avec 2 dates dans 2 tables distinctes
    Par delff dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 09h25

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