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-00907 Missing right parenthesis


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut ORA-00907 Missing right parenthesis
    Bonjour,

    J'ai une erreur ORA-00907 Missing right parenthesis lorsque que je lance ma requête.
    J'ai bien vérifié il ne manque pas de parenthèse, il n'y a pas de virgule qui traine...

    Structure de mes tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    B
    --
    idB
    c
    d
    e
    f
    g
    Ma requête :
    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
     
    SELECT 'Inconnu' Lieu_de_naissance, count(*) Nombre
    FROM A 	
    	JOIN B	
    		ON A.idB = B.idB
    WHERE (
    	A.idA in ('nb',...) 
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)  
    	OR A.idA in ('nb',...)
    )
    AND B.c IS NULL 
    AND B.d IS NULL 
    AND B.e IS NULL 
    AND B.f IS NULL 
    AND B.g IS NULL
    Sachant qu'il faut remplacer 'nb',.. par le nombre maximum d'instances acceptées par in.
    Lorsque que je réduis les instances de A.idA in (..) je n'ai plus de problèmes, est-ce qu'il existe un nombre minimal d'instance dans des parenthèses ?
    Je n'ai pas trouvé d'autre méthode pour comparer idA avec des nombres que d'enchainer les in (parce qu'ils sont limités à 1000 valeurs), si quelqu'un à une autre idée qu'il n'hésite pas !!!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Beaucoup plus simplement, mettez votre liste dans une table et faite une jointure.

  3. #3
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Beaucoup plus simplement, mettez votre liste dans une table et faite une jointure.
    Malheureusement je ne peux pas créer de table. Je n'ai accès qu'en lecture à la base et dois donc me débrouiller avec des requêtes.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez combien de valeur ?
    Si vous ne pouvez pas faire de table, vous pouvez toujours la simuler au moment de l'exécution :
    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
    With SR as
    (
    select 'nb1' as idA from dual union all
    select 'nb2'        from dual union all
    select 'nb3'        from dual union all
    ...
    select 'nb999999'   from dual
    )
    SELECT 'Inconnu' Lieu_de_naissance
         , count(*) Nombre
      FROM A 
           INNER JOIN B	
             ON B.idB = A.idB
           INNER JOIN SR
             ON SR.idA = A.idA
     WHERE B.c IS NULL 
       AND B.d IS NULL 
       AND B.e IS NULL 
       AND B.f IS NULL 
       AND B.g IS NULL;

  5. #5
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez combien de valeur ?
    Environ 61000

  6. #6
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Question bête, avec quoi construisez-vous et exécutez-vous votre requête ? Java, DotNet, php, ... ?

    On peut passer à Oracle des objets de type TABLE OF NUMBER, et faire quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT mesChamps
      FROM maTable
     WHERE maTable.champ MEMBER OF :valuesArray;
    En exécutant la requête avec un bind sur ":valuesArray". En java ça se fait très bien

    EDIT : vérif ok !

  7. #7
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez combien de valeur ?
    Si vous ne pouvez pas faire de table, vous pouvez toujours la simuler au moment de l'exécution :
    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
    With SR as
    (
    select 'nb1' as idA from dual union all
    select 'nb2'        from dual union all
    select 'nb3'        from dual union all
    ...
    select 'nb999999'   from dual
    )
    SELECT 'Inconnu' Lieu_de_naissance
         , count(*) Nombre
      FROM A 
           INNER JOIN B	
             ON B.idB = A.idB
           INNER JOIN SR
             ON SR.idA = A.idA
     WHERE B.c IS NULL 
       AND B.d IS NULL 
       AND B.e IS NULL 
       AND B.f IS NULL 
       AND B.g IS NULL;
    J'ai essayé cette méthode mais malheureusement c'est trop lourd pour toad, il a planté !!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Question idiote mais on ne sais jamais : est-ce que le NOT IN concernerait moins de valeurs ?

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/09/2014, 11h00
  2. Réponses: 1
    Dernier message: 28/11/2013, 14h46
  3. COALESCE requête missing right parenthesis
    Par molesqualeux dans le forum SQL
    Réponses: 8
    Dernier message: 18/02/2011, 11h36
  4. "Missing right parenthesis" à cause d'une fonction dans l'ORDER BY
    Par logari dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 12/05/2010, 14h18
  5. Decode, sign : Missing right parenthesis
    Par Irianne dans le forum SQL
    Réponses: 11
    Dernier message: 12/11/2008, 13h50

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