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 :

View avec oracle


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut View avec oracle
    Bonjour,
    J'ai compilé cette vue mais ça pas marché
    voila le message d'erreur ainsi que la vue:

    Msg D'erreur: ORA-00923: FROM keyword not found where expected
    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
     
    create or replace view MFT_AR_FACTURE_INFO_PROMO  
    (YRES_ID,SHORTDESC,MONTANT,NBR_JOUR,DU,AU)
    as
    SELECT MFT_AR_PROMO_YRES  YRES_ID,
    MFT_AR_PROMO_SHORTDESC  SHORTDESC,
    max(MFT_AR_PROMO_MOUNT) as MONTANT,
    count(*) AS Nbr_jours NBR_JOUR,
    min(MFT_AR_PROMO_DATE) AS Du,
    max(MFT_AR_PROMO_DATE) AS Au 
    FROM
    (SELECT MFT_AR_PROMO_YRES,MFT_AR_PROMO_SHORTDESC,MFT_AR_PROMO_MOUNT,MFT_AR_PROMO_DATE,
    sum(dif) OVER (PARTITION BY MFT_AR_PROMO_YRES ORDER BY MFT_AR_PROMO_DATE) AS plage 
    FROM
    (SELECT MFT_AR_PROMO_YRES,MFT_AR_PROMO_SHORTDESC,MFT_AR_PROMO_MOUNT,MFT_AR_PROMO_DATE,
    coalesce(abs(MFT_AR_PROMO_MOUNT-lag(MFT_AR_PROMO_MOUNT) over (PARTITION BY MFT_AR_PROMO_YRES ORDER BY MFT_AR_PROMO_DATE)),0) AS dif 
    FROM MFT_AR_PROMO  ))
     
     
    GROUP BY  MFT_AR_PROMO_YRES,MFT_AR_PROMO_SHORTDESC,plage ORDER BY MFT_AR_PROMO_YRES, Du
    /

  2. #2
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Ne manque-t-il pas simplement des AS ou des virgules ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MFT_AR_PROMO_YRES  YRES_ID,
    MFT_AR_PROMO_SHORTDESC  SHORTDESC
    Deviedrait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MFT_AR_PROMO_YRES AS YRES_ID,
    MFT_AR_PROMO_SHORTDESC AS SHORTDES

  3. #3
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Non ce n'est pas le problème des AS ou les virgules le message d'erreur c'est
    ORA-00923: FROM keyword not found where expected

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Si j'indente correctement la requête, je constate qu'il n'y a pas d'alias aux FROM (sous_requête). Ça pourrait être ça ?
    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
    CREATE OR REPLACE VIEW MFT_AR_FACTURE_INFO_PROMO  
      (YRES_ID,SHORTDESC,MONTANT,NBR_JOUR,DU,AU)
    AS
    SELECT MFT_AR_PROMO_YRES  YRES_ID,
      MFT_AR_PROMO_SHORTDESC  SHORTDESC,
      max(MFT_AR_PROMO_MOUNT) AS MONTANT,
      count(*) AS Nbr_jours NBR_JOUR,
      min(MFT_AR_PROMO_DATE) AS Du,
      max(MFT_AR_PROMO_DATE) AS Au 
    FROM (
      SELECT MFT_AR_PROMO_YRES, MFT_AR_PROMO_SHORTDESC, MFT_AR_PROMO_MOUNT, MFT_AR_PROMO_DATE,
        sum(dif) OVER (PARTITION BY MFT_AR_PROMO_YRES ORDER BY MFT_AR_PROMO_DATE) AS plage 
      FROM (
        SELECT MFT_AR_PROMO_YRES, MFT_AR_PROMO_SHORTDESC, MFT_AR_PROMO_MOUNT, MFT_AR_PROMO_DATE,
          coalesce(abs(MFT_AR_PROMO_MOUNT-lag(MFT_AR_PROMO_MOUNT) over (PARTITION BY MFT_AR_PROMO_YRES ORDER BY MFT_AR_PROMO_DATE)),0) AS dif 
        FROM MFT_AR_PROMO  
      ) -- Manque alias du FROM intermédiaire
    ) -- Manque alias du FROM général
    GROUP BY  MFT_AR_PROMO_YRES,MFT_AR_PROMO_SHORTDESC,plage ORDER BY MFT_AR_PROMO_YRES, Du
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    J'ai mis des alias mais il reste le même problème

  6. #6
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par bargougui86 Voir le message
    Non ce n'est pas le problème des AS ou les virgules le message d'erreur c'est
    ORA-00923: FROM keyword not found where expected
    Justement... à mon sens, ça signifie qu'il attendait un FROM quelque part, mais qu'il ne l'a pas trouvé.
    Or, à moins que mon bouquin et moi-même ne nous trompions (ce qui est probable, certes), un SELECT sous oracle se compose grosso modo comme suit : (je vous épargne ce qui ne concerne pas ce dont je parle)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT select_item [AS alias][, select_item [AS alias]]* [INTO ...] FROM ...
    Donc, un select_item ne peut être suivi que par une virgule, un AS, un INTO ou un FROM.
    Ce qui me ramène à ceci :
    Ne manque-t-il pas simplement des AS ou des virgules ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MFT_AR_PROMO_YRES  YRES_ID,
    MFT_AR_PROMO_SHORTDESC  SHORTDESC
    Deviedrait alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT MFT_AR_PROMO_YRES AS YRES_ID,
    MFT_AR_PROMO_SHORTDESC AS SHORTDES
    Si effectivement mon livre et moi-même nous trompons, pourrait-on m'expliquer la signification de cette construction ?

    EDIT : d'ailleurs, remarquez que si ce que j'avance est juste, ça colle avec la définition de la vue. Voyez donc les noms des deux premières colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE OR REPLACE VIEW MFT_AR_FACTURE_INFO_PROMO  
    (YRES_ID,SHORTDESC,MONTANT,NBR_JOUR,DU,AU)
    Et pour couronner le tout, il y a précisément 2 espaces entre MFT_AR_PROMO_YRES et YRES_ID dans la requête présentée. De quoi placer un mot entre... un AS par exemple

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ce que ne précise pas ton livre, c'est que le AS n'est pas nécessaire au niveau du select pour faire un alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select toto as alias1, titi as alias2 from ma_table
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select toto alias1, titi alias2 from ma_table

  8. #8
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Merci Antoine_935 pour votre explication mais le problème c'est pas au niveau des espaces ou les alia, il n 'y a pas de souci si on met des espaces supplémentaire ou des alias et comme il a dit Jerome_Mtl on peut mettre ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champs1 toto FROM ...
    Mais d'après mon analyse le problème c'est au niveau des select imbriqué mais je me bloque .

  9. #9
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Ah c'est juste... je connaissais bien ça pour la liste des FROM, mais pour la liste des SELECT... Au temps pour moi donc

    Malgré tout, ça collait si bien... ça vaudrait la peine de tester quand même

  10. #10
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Oui bien sur

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Ah c'est juste... je connaissais bien ça pour la liste des FROM, mais pour la liste des SELECT... Au temps pour moi donc

    Malgré tout, ça collait si bien... ça vaudrait la peine de tester quand même
    Tu crois que je dis des choses sans tester ?
    Bon, ça m'arrive... mais pas cette fois !

  12. #12
    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
    On ne précise pas la liste des colonnes dans l'ordre de création d'une vue puisqu'elles sont déjà contenues dans le select.

  13. #13
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par Waldar Voir le message
    On ne précise pas la liste des colonnes dans l'ordre de création d'une vue puisqu'elles sont déjà contenues dans le select.
    Mmmh, j'ose ?

    Allez oui !
    Sisi, c'est dans mon bouquin





    Dites... si c'est faux, je le brûle ce livre !

  14. #14
    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
    Ne le brûlez pas, j'aurai du tester mon propos, qui est faux.

    Celà m'a permis de trouver l'erreur cela dit, qui se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      count(*) AS Nbr_jours NBR_JOUR,
    Il y a tentative de double alias sur cette colonne !

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Waldar Voir le message
    On ne précise pas la liste des colonnes dans l'ordre de création d'une vue puisqu'elles sont déjà contenues dans le select.
    Ce n'est certes pas nécessaire mais ce n'est pas non plus une erreur de syntaxe.

  16. #16
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Ne le brûlez pas, j'aurai du tester mon propos, qui est faux.

    Celà m'a permis de trouver l'erreur cela dit, qui se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      count(*) AS Nbr_jours NBR_JOUR,
    Il y a tentative de double alias sur cette colonne !
    Alors que dois-je faire maintenant??

  17. #17
    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
    Supprimer un des deux alias :

  18. #18
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 99
    Points : 43
    Points
    43
    Par défaut
    Merci pour votre aide et pour votre attention, je bloque depuis 4 ou 5 jours sur ce bête "AS"

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

Discussions similaires

  1. Quel langage avec Oracle????
    Par djedje11 dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 16/03/2004, 11h15
  2. Réponses: 14
    Dernier message: 01/09/2003, 15h54
  3. Conseils pour developper une application avec Oracle
    Par belugha dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 02/06/2003, 16h03
  4. Tree View avec XML et XSL
    Par Drooxy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/04/2003, 10h21
  5. [Crystal Report 9] Changer de schéma avec Oracle
    Par sur_uix dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 14/11/2002, 12h19

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