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 :

ORA-00905: mot-clé absent


Sujet :

SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut ORA-00905: mot-clé absent
    Bonjour , je commence à m'autoformer sur SQL et je voudrais interroger 2 tables

    j'ai fait cette requete mais çà plante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EN_IDENT, TT_IDTT from BRRI.BRRQTAD2TEM Inner Join BRRI.BRRQTEN2TEM WHERE BRRQTAD2TEM.EN_IDENT =BRRQTEN2TEM.EN_IDENT
    ORA-00905: mot-clé absent
    00905. 00000 - "missing keyword"
    *Cause:
    *Action:
    Erreur à la ligne 1, colonne 74
    je pense qu'il aime pas le inner join. Pouvez vous m'aider . Ca doit être simple , mais je suis une bille et les docs ou bouquins me disent que c'est bon donc

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Quand on utilise JOIN, la condition de jointure ne s'exprime pas par un WHERE, mais par un ON.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EN_IDENT, TT_IDTT from BRRI.BRRQTAD2TEM Inner Join BRRI.BRRQTEN2TEM WHERE BRRQTAD2TEM.EN_IDENT =BRRQTEN2TEM.EN_IDENT
    j'espère que c'est mieux

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    c'est pas ce que dit les bouquins , site on peut utiliser le where ou le on mais bon

  5. #5
    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 789
    Points
    30 789
    Par défaut
    Quel bouquin ?

    Il y a deux manières d'effectuer une jointure interne :
    La première est préconisée par la norme du langage SQL publiée en 1992 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT  colonnes
    FROM    table1
        INNER JOIN
            table2
            ON  table1.col  = table2.col
    ;
    La seconde effectue une restriction sur un produit cartésien et devrait être abandonnée au profit de la précédente.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  colonnes
    FROM    table1
        ,   table2
    WHERE   table1.col  = table2.col
    ;
    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.

  6. #6
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Bonjour al1_24,

    Peux-tu expliciter ta remarque
    "La seconde effectue une restriction sur un produit cartésien et devrait être abandonnée au profit de la précédente.
    SELECT colonnes
    FROM table1
    , table2
    WHERE table1.col = table2.col
    ;"

    Rassure-moi, Oracle ne fait pas un vrai produit cartésien (extrêmement coûteux) puis filtre des données?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  7. #7
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    ...Rassure-moi, Oracle ne fait pas un vrai produit cartésien (extrêmement coûteux) puis filtre des données?
    Nenni, Oracle ne fait pas ça !
    J'ai réussi à remettre la main sur une discussion à ce propos, intéressante de bout en bout :
    https://www.developpez.net/forums/d1...s/#post6969089
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  8. #8
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Merci Pomalaix pour le lien, c'était très intéressant.

    En ce qui me concerne je n'aime pas du tout cette syntaxe ANSI pour N raisons que je décris sur mon blog : "Jointures SQL : syntaxe propriétaire Oracle VS syntaxe ANSI92 (celle là, je ne l'aime pas!)"
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Merci Pomalaix pour le lien, c'était très intéressant.

    En ce qui me concerne je n'aime pas du tout cette syntaxe ANSI pour N raisons que je décris sur mon blog : "Jointures SQL : syntaxe propriétaire Oracle VS syntaxe ANSI92 (celle là, je ne l'aime pas!)"
    Votre position concernant la jointure normalisée depuis 1992 (soit 25 ans) est stupide. J'ai posté dans votre blog pourquoi !

    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/ * * * * *

  10. #10
    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
    Oui, l'ensemble de vos griefs contre NATURAL JOIN sont justifiés, de mémoire cet opérateur de jointure a été introduit pour ressembler aux maths de l'algèbre relationnelle qui se cache derrière le SQL.
    Mais opérationnellement, il ne faut pas l'utiliser.

    Pour les colonnes qui sont sous parenthèses dans le USING, ça permet simplement au moteur de voir qu'il s'agit de plusieurs colonnes.
    Avec cette écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from obj1 join obj2 using obj3, obj4
    Si dans mes tables obj2 j'ai une colonne qui s'appelle obj4, et si dans mon schéma j'ai une table qui s'appelle obj4, comment différencier la colonne jointure d'une nouvelle jointure ?
    Car vous ne l'avez pas écrit dans votre blog, mais on peut mélanger les syntaxes de jointure Oracle & ANSI.

    La syntaxe ANSI était boguée dans certains cas à son introduction, mais depuis trois versions majeures depuis il ne doit plus en rester beaucoup.

    Petit exercice, écrivez-moi ces jointures-là avec la syntaxe Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
          from t1
     left join t2 on t2.c2  = t1.c2
     left join t3 on t3.c3 in (t1.c3, t2.c3);
     
          from t1
     left join t2  on t2.c2 = t1.c2
                  and t2.c3 = 'ABCD';
     
          from t1
     left join t2
    inner join t3 on t3.c3 = t2.c3
                  on t2.c2 = t1.c2;
    Attention, je ne dis pas qu'il n'y a pas d'équivalent ni que ces jointures sont parfaites, je parle juste de faisabilité.

    Pour finir, vous reprochez finalement qu'il y ait plusieurs façons de faire la même chose. Oui.
    Combien existe-t-il d'algorithme de tris ? Ils font pourtant tous la même chose, cela signifie-t-il qu'on doit imposer le même à tout le monde ? Non.

  11. #11
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Merci Pomalaix pour le lien, c'était très intéressant.

    En ce qui me concerne je n'aime pas du tout cette syntaxe ANSI pour N raisons que je décris sur mon blog : "Jointures SQL : syntaxe propriétaire Oracle VS syntaxe ANSI92 (celle là, je ne l'aime pas!)"
    Je remarque d'ailleurs que vous n'avez pas daigné publier dans votre blog les remarques que j'y ai faites....

    Bel exemple d'honnêteté intellectuelle...

    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/ * * * * *

  12. #12
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    On se calme, on se calme!

    Le commentaire a été publié le 27/12 mais les paramètres de Canalblog le rendaient invisibles.
    En lisant ton commentaire dédaigneux ici j'ai alors décidé de le supprimer.

    A bon entendeur salut!
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  13. #13
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 761
    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 761
    Points : 52 547
    Points
    52 547
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    On se calme, on se calme!

    Le commentaire a été publié le 27/12 mais les paramètres de Canalblog le rendaient invisibles.
    En lisant ton commentaire dédaigneux ici j'ai alors décidé de le supprimer.

    A bon entendeur salut!
    ça de m'étonne pas vu le niveau de bêtise de votre article !

    A +

    et bonne année !
    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/ * * * * *

  14. #14
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Votre position concernant la jointure normalisée depuis 1992 (soit 25 ans) est stupide. J'ai posté dans votre blog pourquoi !

    A +
    Franchement je suis rarement d'accord avec vous quand vous intervenez sur le forum Oracle. Mais sans avoir eu ma possibilité de lire votre commentaire je ne peux être que 100% d'accord avec vous.

  15. #15
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Tiens des insultes maintenant Frédo... bravo, l'arme du pauvre

    Mais bon, la bave du crapaud ANSI 92 n'atteint pas la blanche colombe Oracle!
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

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

Discussions similaires

  1. ORA-00905: mot-clé absent
    Par dalhia dans le forum Oracle
    Réponses: 10
    Dernier message: 05/08/2010, 16h30
  2. erreur ORA 00905 : Mot clé absent sur un CASE WHEN
    Par gaijinma dans le forum PL/SQL
    Réponses: 2
    Dernier message: 01/07/2010, 14h32
  3. Réponses: 12
    Dernier message: 06/08/2009, 16h16
  4. ORA-00905: mot-clé absent
    Par sofuzion dans le forum SQL
    Réponses: 4
    Dernier message: 07/12/2008, 16h29
  5. ORA-00905: Mot-clé absent
    Par oraclinfo dans le forum Oracle
    Réponses: 2
    Dernier message: 19/09/2006, 14h11

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