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 :

Probleme requete sql SQL Error: ORA-00905: mot-clé absent


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut Probleme requete sql SQL Error: ORA-00905: mot-clé absent
    Bonjour

    Je travaille sous Oracle 10g

    Je veux mettre mes doublons dans ma table temporaire mais ça ne marche pas
    J'ai un probleme avec ma requete SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT DISTINCT IMAGE_ID,PATH, PRODUIT_BIZ, PATTERN 
    INTO CAT_IMAGES_TMP 
    FROM CAT_IMAGES 
    GROUP BY IMAGE_ID, PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1;
    Voici le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Error at Command Line:2 Column:5
    Error report:
    SQL Error: ORA-00905: mot-clé absent
    Merci pour votre aide

    Cordialement Philippe

  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
    Par défaut
    Salut ,

    En plsql en met select ... into ...
    mais en sql t'as pas besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT DISTINCT IMAGE_ID,PATH, PRODUIT_BIZ, PATTERN 
    FROM CAT_IMAGES 
    GROUP BY IMAGE_ID, PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1;

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Merci Salim,

    Ta requete fonctionne, j'arrive à récupérer les lignes qui sont en doublons!

    Le problème c'est qu'il faut que j'envoi ces lignes (mes doublons) vers ma table temporaire

    Comment je peux faire ça avec une requete SQL?

    Cordialement Philippe

  4. #4
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    tu te trompes de syntaxe, en oracle, c'est pas comme ça qu'on fait.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO CAT_IMAGES_TMP 
    SELECT DISTINCT IMAGE_ID,PATH, PRODUIT_BIZ, PATTERN 
    FROM CAT_IMAGES 
    GROUP BY IMAGE_ID, PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1;

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Ah oui! Merci d'avoir corriger mon erreur de synthaxe!

    Le seul probleme c'est que mon IMAGE_ID est une clé primaire (donc il y a une incrémentation automatique), si je teste sur tous les champs de ma table je ne trouverai aucun doublon puisque le champs IMAGE_ID sera différent pour chaque ligne.

    Et si je met la requete SQL suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO CAT_IMAGES_TMP 
    SELECT DISTINCT PATH, PRODUIT_BIZ, PATTERN 
    FROM CAT_IMAGES 
    GROUP BY PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1;
    J'obtiens l'erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Error starting at line 1 in command:
    INSERT INTO CAT_IMAGES_TMP 
    SELECT DISTINCT PATH, PRODUIT_BIZ, PATTERN 
    FROM CAT_IMAGES 
    GROUP BY PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1
    Error at Command Line:1 Column:12
    Error report:
    SQL Error: ORA-00947: nombre de valeurs insuffisant
    Merci pour votre aide

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    1/ INSERT : TOUJOURS mettre les colonnes insérées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO MATABLE (col1, col18, col2) SELECT ....
    2/ L'utilisation du DISTINCT à limiter
    Un group by te regroupe déjà les 3 colonnes : Pourquoi refaire un distinct ensuite ?

  7. #7
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Le site qui référence toutes les erreurs oracle
    http://www.ora-code.com/

    ou les accès directs
    http://ora-00947.ora-code.com/

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Merci beaucoup pour tes remarques et tes liens MCM.

    Ma requete marche!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO CAT_IMAGES_TMP (PATH, PRODUIT_BIZ, PATTERN)
    SELECT DISTINCT PATH, PRODUIT_BIZ, PATTERN
    FROM CAT_IMAGES 
    GROUP BY PATH, PRODUIT_BIZ, PATTERN
    HAVING COUNT(*) > 1;
    Merci à tous

  9. #9
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    t'as pas tout lu enlève le DISTINCT de ta requete

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 93
    Par défaut
    Si j'ai tout lu!

    Mais pour la suite, j'ai besoin de mettre mon DISTINCT!

    J'arrive la ou je voulais arriver donc je laisse le DISTINCT dans ma requete *

    Merci pour ton aide

  11. #11
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut ORA 00905 Mot de clé absent --
    Salut,

    J'ai une erreur ORA 00905: Mot clé absent. Or, j'ai beau chercher, je ne trouve pas l'erreur se trouvant dans le code suivant :

    Merge into exemplaires e
    using (select isbn, exemplaire, locations from tempoexemplaires) t
    on (t.isbn=e.isbn and t.exemplaire=e.numero)
    when matched then
    update set etat='BO' where (le curseur grise ce "where") t.locations between 11 and 25
    delete where t.locations>60;

    Merci pour votre aide

  12. #12
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 953
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 953
    Par défaut
    Il n'y a pas de where dans la partie update du merge.
    En fait c'est le using ...on qui fait office de where.

  13. #13
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Par défaut
    Thks skuatamad pour ta réponse.

    En effet, la syntaxe que j'ai utilisée ne s'applique pas à la version 9i.

    Cela étant dit, je ne sais pas comment placer ma condition "Where" :t.locations between 11 and 25. Je débute sur Oracle.


    Merci pour votre aide

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

Discussions similaires

  1. Probleme requete update SQL
    Par linuxien_62 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 22/08/2013, 13h37
  2. ORA-00905: mot-clé absent
    Par dalhia dans le forum Oracle
    Réponses: 10
    Dernier message: 05/08/2010, 16h30
  3. 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
  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