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

Administration Oracle Discussion :

Probleme sur creation de vue


Sujet :

Administration Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Probleme sur creation de vue
    Salut,
    J'ai fini par ecrire une requete qui me rend exactement le bon resultat mais ... elle est un peu crad je trouve.
    Donc si qq1 a une solution pour optimiser son ecriture j'en serais ravi :-)
    J'ai bien cherché en retirant les UNION et en mettant plusieurs close WHERE mais ca marche jamais.

    D'avance merci

    Ce qui m'embete c'est que toutes mes classes s1SkBlAg,s1Slim,s1HemIC,s1AmAcBP sont définies de la même maniere et les requetes ont tts la même structure. Je suis sur qu'il y a moyen d'optimiser avec un truc du genre :


    View NON OK :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create view s1FamDbv as select 
    LeafFam.s1FamilyDescFR,
    LeafFam.FamilyDesc,
    LeafFam.FamilyName,
    s1RawMat.PartNumber,
    s1RawMat.SUPERSEDED,
    s1RawMat.OBID
    from LeafFam , s1RawMat, s1SkBlAg , s1Slim , s1AmAcBP, s1HemIC
    where s1RawMat.ItemMstrOBID = s1SkBlAg.right AND LeafFam.OBID = s1SkBlAg.Left OR 
    where s1RawMat.ItemMstrOBID = s1Slim.right AND LeafFam.OBID = s1Slim.Left OR 
    where s1RawMat.ItemMstrOBID = s1HemIC.right AND LeafFam.OBID = s1HemIC.Left OR 
    where s1RawMat.ItemMstrOBID = s1AmAcBP.right AND LeafFam.OBID = s1AmAcBP.Left;
    commit;

    View OK :
    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
    create view s1FamDbv as select 
    LeafFam.s1FamilyDescFR,
    LeafFam.FamilyDesc,
    LeafFam.FamilyName,
    s1RawMat.PartNumber,
    s1RawMat.SUPERSEDED,
    s1RawMat.OBID
    from LeafFam , s1RawMat, s1SkBlAg
    where s1RawMat.ItemMstrOBID = s1SkBlAg.right AND LeafFam.OBID = s1SkBlAg.Left
    UNION (
    select 
    LeafFam.s1FamilyDescFR,
    LeafFam.FamilyDesc,
    LeafFam.FamilyName,
    s1RawMat.PartNumber,
    s1RawMat.SUPERSEDED,
    s1RawMat.OBID
    from LeafFam , s1RawMat, s1Slim
    where s1RawMat.ItemMstrOBID = s1Slim.right AND LeafFam.OBID = s1Slim.Left )
    UNION (
    select 
    LeafFam.s1FamilyDescFR,
    LeafFam.FamilyDesc,
    LeafFam.FamilyName,
    s1RawMat.PartNumber,
    s1RawMat.SUPERSEDED,
    s1RawMat.OBID
    from LeafFam , s1RawMat, s1HemIC
    where s1RawMat.ItemMstrOBID = s1HemIC.right AND LeafFam.OBID = s1HemIC.Left )
    UNION (
    select 
    LeafFam.s1FamilyDescFR,
    LeafFam.FamilyDesc,
    LeafFam.FamilyName,
    s1RawMat.PartNumber,
    s1RawMat.SUPERSEDED,
    s1RawMat.OBID
    from LeafFam , s1RawMat, s1AmAcBP
    where s1RawMat.ItemMstrOBID = s1AmAcBP.right AND LeafFam.OBID = s1AmAcBP.Left);
    commit;

  2. #2
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    Il faut preciser la verion de tes outils , et utiliser le # pour mettre ton code
    essaie ce code
    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
     
    CREATE VIEW s1famdbv
    AS
       SELECT leaffam.s1familydescfr, leaffam.familydesc, leaffam.familyname,
              s1rawmat.partnumber, s1rawmat.superseded, s1rawmat.obid
         FROM leaffam, s1rawmat, s1skblag, s1slim, s1amacbp, s1hemic
        WHERE     s1rawmat.itemmstrobid = s1skblag.RIGHT
              AND leaffam.obid = s1skblag.LEFT
           OR (s1rawmat.itemmstrobid = s1slim.RIGHT AND leaffam.obid = s1slim.LEFT
              )
           OR (    s1rawmat.itemmstrobid = s1hemic.RIGHT
               AND leaffam.obid = s1hemic.LEFT
              )
           OR (    s1rawmat.itemmstrobid = s1amacbp.RIGHT
               AND leaffam.obid = s1amacbp.LEFT
              )

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salut Salim11,
    Deja merci pour ton aide mais quand j'essaye ensuite des requetes sur cette vue je n'ai pas de resultats.
    Alors qu'avec la solution des jointures la réponse est instantanée (base avec tres peu de donnees pour l'instant juste ce qu'il faut pour valider les requetes).

  4. #4
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    salut,

    N'oublie pas que tu as 6 tables LeafFam , s1RawMat, s1SkBlAg , s1Slim , s1AmAcBP, s1HemIC , pour avoir une bonne requette il faut avoir n-1 de condition de jointure .

    Tu peux me donner les régles de gestion ?

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur et DBA Oracle
    Inscrit en
    Octobre 2006
    Messages
    878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur et DBA Oracle

    Informations forums :
    Inscription : Octobre 2006
    Messages : 878
    Points : 1 197
    Points
    1 197
    Par défaut
    Salut,

    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
     
    CREATE VIEW s1famdbv
    AS
       SELECT t1.s1familydescfr, t1.familydesc, t1.familyname, t1.partnumber,
              t1.superseded, t1.obid, t1.itemmstrobid
         FROM (SELECT leaffam.s1familydescfr, leaffam.familydesc,
                      leaffam.familyname, s1rawmat.partnumber,
                      s1rawmat.superseded, s1rawmat.obid, s1rawmat.itemmstrobid
                 FROM leaffam, s1rawmat, s1slim
                WHERE s1rawmat.itemmstrobid = s1slim.RIGHT
                  AND leaffam.obid = s1slim.LEFT
               UNION ALL
               SELECT leaffam.s1familydescfr, leaffam.familydesc,
                      leaffam.familyname, s1rawmat.partnumber,
                      s1rawmat.superseded, s1rawmat.obid, s1rawmat.itemmstrobid
                 FROM leaffam, s1rawmat, s1hemic
                WHERE s1rawmat.itemmstrobid = s1hemic.RIGHT
                  AND leaffam.obid = s1hemic.LEFT
               UNION ALL
               SELECT leaffam.s1familydescfr, leaffam.familydesc,
                      leaffam.familyname, s1rawmat.partnumber,
                      s1rawmat.superseded, s1rawmat.obid, s1rawmat.itemmstrobid
                 FROM leaffam, s1rawmat, s1amacbp
                WHERE s1rawmat.itemmstrobid = s1amacbp.RIGHT
                  AND leaffam.obid = s1amacbp.LEFT) t1,
              s1skblag
        WHERE t1.itemmstrobid = s1skblag.RIGHT AND t1.obid = s1skblag.LEFT

    Je l'ai amélioré un peu mais je pouvez pas enlever le union

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salim,
    Oracle continue a me renvoyer no rows selected et je peux t'assurer que derriere j'ai bien des objets dans mes tables qui sont attendus en reponse :-)
    Je vais continuer à chercher mais sinon je crois que je vais utiliser mes jointures même si pour maintenir ça va etre la lutte. En gros j'ai 150 Attributs par lesquels mes users peuvent faire des requetes et en plus de s1RawMat & LeafFam j'ai environ une centaine de classes dans lesquelles il va falloir que je fasse des requetes.

    Aller je crois que pour aujourd'hui je vais laisser tomber et passer à une autre sujet.
    Merci àtoi en tout cas et des que j'ai une solution je renvoye la syntaxe.

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Salut,
    Citation Envoyé par salim11
    Tu peux me donner les régles de gestion ?
    En fait les classes s1SkBlAg , s1Slim , s1AmAcBP, s1HemIC sont des classes de relations entre Leafam et RawMat
    J'ai 150 Classes de ce types --> 150 Requetes ou ne changent que le nom de la table (Select identique et classe de gauche ou droite idem).

Discussions similaires

  1. probleme de creation de vue
    Par djamillus dans le forum PL/SQL
    Réponses: 9
    Dernier message: 30/01/2009, 15h08
  2. probleme sur creation d un thread
    Par zit_zit dans le forum C#
    Réponses: 3
    Dernier message: 07/06/2008, 19h00
  3. [VBA-E] Probleme sur création menu
    Par norkmassiv dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/12/2006, 17h12
  4. Probleme sur creation menu popup
    Par biloute2121 dans le forum MFC
    Réponses: 1
    Dernier message: 11/01/2006, 08h41
  5. Réponses: 2
    Dernier message: 17/11/2005, 13h57

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