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

Firebird Discussion :

Ces requètes ne marchent plus


Sujet :

Firebird

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Ces requètes ne marchent plus
    * Bonjour, *

    J'ai fait évoluer les requêtes java à la suite du rajout du champ siIdPos dans la base de donnée sur la table T_WORD et les requêtes de lecture ne marchent plus avec ou sans le champ SiIdPos, les mots ne sont plus renseignés.

    Je donne les deux requêtes avec SiIdPos et sans: Dans les deux cas les champs contenant les mots et tout ce qui est dans la table T_WORD n'est pas renseigné. Pourquoi?

    Ci-après la requête avec SiIdPos:

    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
     
    SELECT 
      ES.nuIdElemn, 
      ES.nuIdTypeElement, 
      ES.nuIdOccurence, 
      ES.wsText, 
      ES.vcName, 
      ES.nuidpar, 
      ES.siNbChunk, 
      ES.siIdD, 
      EC.nuIdChunk, 
      C.nuIdChunkType, 
      C.siNbWord, 
      C.nuIdDrivingPos, 
      W.vcString, 
      W.siIdPOS, 
      L.cExcluded, 
      L.siIdPOS 
    FROM T_ELEMENT_SEMANTIQUE ES 
    LEFT JOIN T_ELEMENT_CHK EC ON ES.nuIdElemn = EC.nuIdElemn 
    LEFT JOIN T_CHUNK C ON EC.nuIdChunk = C.nuIdChunk 
    LEFT JOIN T_CHUNK_WORD CW ON C.nuIdChunk = CW.nuIdChunk 
    LEFT JOIN T_WORD W ON CW.nuIdWord = W.nuIdWord 
    LEFT JOIN T_LEMMA L ON W.nuIdLemma = L.nuIdLemma AND W.siIdPOS = L.siIdPOS 
    WHERE
      ES.siIdD = 1
    ORDER BY ES.nuIdOccurence DESC, ES.vcName, ES.nuIdElemn, EC.siChkRank, CW.siWordRank
    et maintenant la requète sans SiIdPos
    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
     
    SELECT 
      ES.nuIdElemn, 
      ES.nuIdTypeElement, 
      ES.nuIdOccurence, 
      ES.wsText, 
      ES.vcName, 
      ES.nuidpar, 
      ES.siNbChunk, 
      ES.siIdD, 
      EC.nuIdChunk, 
      C.nuIdChunkType, 
      C.siNbWord, 
      C.nuIdDrivingPos, 
      W.vcString, 
      L.cExcluded, 
      L.siIdPOS 
    FROM T_ELEMENT_SEMANTIQUE ES 
    LEFT JOIN T_ELEMENT_CHK EC ON ES.nuIdElemn = EC.nuIdElemn 
    LEFT JOIN T_CHUNK C ON EC.nuIdChunk = C.nuIdChunk 
    LEFT JOIN T_CHUNK_WORD CW ON C.nuIdChunk = CW.nuIdChunk 
    LEFT JOIN T_WORD W ON CW.nuIdWord = W.nuIdWord 
    LEFT JOIN T_LEMMA L ON W.nuIdLemma = L.nuIdLemma 
    WHERE 
      ES.siIdD = 1 
    ORDER BY ES.nuIdOccurence DESC, ES.vcName, ES.nuIdElemn, EC.siChkRank, CW.siWordRank
    et maintenant la requête tirée d'une sauvegarde qui marchait
    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
     
    "SELECT "
            + "ES.nuIdElemn, "
            + "ES.nuIdTypeElement, "
            + "ES.nuIdOccurence, "
            + "ES.wsText, "
            + "ES.vcName, "
            + "ES.siNbChunk, "
            + "ES.siIdD, "
            + "EC.nuIdChunk, "
            + "C.nuIdChunkType, "
            + "C.siNbWord, "
            + "C.nuIdDrivingPos, "
            + "W.vcString, "
            + "L.cExcluded, "
            + "L.siIdPOS"
            + " FROM"
            + " T_ELEMENT_SEMANTIQUE ES"
            + " LEFT JOIN T_ELEMENT_CHK EC ON ES.nuIdElemn = EC.nuIdElemn"
            + " LEFT JOIN T_CHUNK C ON EC.nuIdChunk = C.nuIdChunk"
            + " LEFT JOIN T_CHUNK_WORD CW ON C.nuIdChunk = CW.nuIdChunk"
            + " LEFT JOIN T_WORD W ON CW.nuIdWord = W.nuIdWord"
            + " LEFT JOIN T_LEMMA L ON W.nuIdLemma = L.nuIdLemma"
            + " WHERE"
            + " ES.siIdD = " + iIdDoc
            + " ORDER BY"
            + " ES.vcName,"
            + " ES.nuIdOccurence DESC,"
            + " ES.nuIdElemn,"
            + " EC.siChkRank,"
            + " CW.siWordRank";
    et cette requête ne passe pas l’interpréteur sql et s’arrête sur le champ C.nuIdChunkType
    alors que celle ci est exécutée par l'interpréteur sans donner les résultats en mots
    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
     
    SELECT
      ES.nuIdElemn, 
      ES.nuIdTypeElement, 
      ES.nuIdOccurence, 
      ES.wsText, 
      ES.vcName, 
      ES.siNbChunk, 
      ES.siIdD, 
      EC.nuIdChunk, 
      C.nuIdChunkType, 
      C.siNbWord, 
      C.nuIdDrivingPos, 
      W.vcString, 
      L.cExcluded, 
      L.siIdPOS 
    FROM T_ELEMENT_SEMANTIQUE ES 
    LEFT JOIN T_ELEMENT_CHK EC ON ES.nuIdElemn = EC.nuIdElemn 
    LEFT JOIN T_CHUNK C ON EC.nuIdChunk = C.nuIdChunk 
    LEFT JOIN T_CHUNK_WORD CW ON C.nuIdChunk = CW.nuIdChunk 
    LEFT JOIN T_WORD W ON CW.nuIdWord = W.nuIdWord 
    LEFT JOIN T_LEMMA L ON W.nuIdLemma = L.nuIdLemma 
    WHERE ES.siIdD = 1 
    ORDER BY ES.nuIdOccurence DESC, ES.vcName, ES.nuIdElemn, EC.siChkRank, CW.siWordRank
    A noter que les trois dernières requêtes, a une quote près sont les mêmes.

    Comment faire marcher ces requêtes? Il semble que l'introduction du champ siIdPos dans la base de données ait changé le comportement du système

    * Merci *

  2. #2
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut il faut que toutes les tables soient remplies
    bonjour
    En contrôlant ma base de donnée j'ai constaté qu'une table était vide: Dans les allers et retours pour avoir un siIdPos la structure de la base de donnée avait changée et un insert était sur l'ancienne structure
    De fait il y avait une condition mal exprimée et inutile dans la requête: la requête qui convient est comme suit:
    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
     
    SELECT
      ES.nuIdElemn,
      ES.nuIdTypeElement,
      ES.nuIdOccurence,
      ES.wsText,
      ES.vcName,
      ES.nuidpar,
      ES.siNbChunk,
      ES.siIdD,
      EC.nuIdChunk,
      C.nuIdChunkType,
      C.siNbWord,
      C.nuIdDrivingPos,
      W.nuIdWord,
      W.vcString,
      W.siIdPOS,
      L.cExcluded,
      L.siIdPOS
    FROM
      T_ELEMENT_SEMANTIQUE ES
      LEFT JOIN T_ELEMENT_CHK EC ON ES.nuIdElemn = EC.nuIdElemn
      LEFT JOIN T_CHUNK C ON EC.nuIdChunk = C.nuIdChunk
      LEFT JOIN T_CHUNK_WORD CW ON C.nuIdChunk = CW.nuIdChunk
      LEFT JOIN T_WORD W ON CW.nuIdWord = W.nuIdWord
      LEFT JOIN T_LEMMA L ON W.nuIdLemma = L.nuIdLemma AND W.siIdPOS = L.siIdPOS
    WHERE ES.siIdD = 1
    ORDER BY ES.nuIdOccurence DESC, ES.vcName, ES.nuIdElemn, EC.siChkRank, CW.siWordRank
    en commentaire, il a fallu rajouter une contrainte de jointure sur SiIdPos, mais il n'y avait pas à rajouter de jointure sur les identifiants qui était bien exprimée par l'identifiant nuIdLemma T_LEMMA ne connait pas nuIdWord.

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

Discussions similaires

  1. [ACCESS 97] mes requêtes ne marchent plus!
    Par AGR26 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/09/2008, 15h24
  2. Réponses: 6
    Dernier message: 25/05/2007, 10h44
  3. Réponses: 11
    Dernier message: 22/03/2007, 16h45
  4. fonctions qui ne marchent plus
    Par Kuuei dans le forum JWS
    Réponses: 2
    Dernier message: 26/05/2006, 14h50
  5. [SQL] Problème de requête SQL de plus de 8060 caractères ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 13
    Dernier message: 06/04/2005, 15h07

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