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

MS SQL Server Discussion :

[ODBC] erreur SQL pour les unions qui renvoient vide


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut [RESOLU][ODBC] erreur SQL pour les unions qui renvoient vide
    bonjour;
    j'utilise ODBC et je génere mes requetes avec java et lorqu'une union quelque soit la complexité renvoie vide (=> pas de résultat)

    Voici un extrait de mes logs :
    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
     
    Erreur Lors de l'execution de la requete SQL
    Requête[
    SELECT DISTINCT axe.id idAxe, axe.des desAxe, comp.des competencedes, dtable_2.lien competenceid 
    FROM dtable dtable_1, dtable dtable_2, des_v1 desv1, des_d desd,dtableaxe, dtable comp ,dtable emploi 
    WHERE dtable_1.id = desv1.id_pere 
    AND  desd.id_desc IN (1106778) 
    AND desd.id_volet IN (830018, 830022, 830020) 
    AND desv1.id = desd.id_volet 
    AND desd.id_table = dtable_2.id 
    AND dtable_1.tc = 'DESC.NOMGPE2' 
    AND desv1.type = 'COMP' 
    AND axe.nom_table = 'REFCOMP0' 
    AND axe.id =comp.lien 
    AND comp.nom_table = 'REFCOMP1' 
    AND dtable_2.lien=comp.id 
    AND desd.id_desc=emploi.id 
    UNION 
    SELECT DISTINCT axe.id idAxe, axe.des desAxe, comp.des competencedes, dtable1.lien competenceid 
    FROM dtable dtable1, pers_v persv, volet volet1,pers pers1,dtable comp,dtable axe 
    WHERE dtable1.id = persv.id_table 
    AND  persv.id_pers IN (1828) 
    AND persv.id_volet IN (162162, 162166, 162164)
    AND volet1.type = 'COMP' 
    AND persv.id_volet = volet1.id  
    AND persv.id_pers = pers1.id 
    AND dtable1.lien =comp.id 
    AND axe.id =comp.lien ORDER BY desAxe,competencedes
    ]
    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]Dans une instruction SQL contenant un opérateur UNION, toutes les requêtes doivent avoir un nombre égal d'expressions dans leurs listes cible.



    Je voudrais savoir pk cela me génère une erreur et que faire pour résoudre ce pb.


    merci d'avance

    fabrice

  2. #2
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Est ce que cette requete fonctionne si tu la lances avec SQL Server ?

    PS : merci de mettre les balises [code] pour faciliter la lecture
    MashiMaro

    L'homme sage apprend de ses erreurs, l'homme très sage apprend des erreurs des autres.

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    J'exécute avec succès la requête grace à l'analyseur de requête de SQL server. Hier j'ai résolu le pb de l'exception générée par l'éxecution de la requête en l'encapsulant dans des parenthèses. En effet c'est le ORDER BY qui pose pb. Mais lors de la lecture du resultset j'ai une autre erreur (décidement) : mon resultSet est TYPE_FORWARD_ONLY (je fais un rs.before() mais cela marche pour toutes les autres requetes...)

    Je vais chercher un peu sur google mais si tu peux me répondre avant c'est avec plaisir :-)

    merci

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2003
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    C'est encore moi donc j'ai contourné le pb en fait si j'utilise la requete comme une table temporaire dans un FROM et que je selectionne tous les champs de cette table : tmp.* cela ne provoque plus d'erreur. Je souligne que tmp.* est important car si l'on selectionne on spécifiant les différentes colonnes de tmp cela provoque une erreur !!!!!



    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
     
    SELECT tmp.*
    FROM 
    (SELECT DISTINCT axe.id idAxe, axe.des desAxe, comp.des competencedes, dtable_2.lien competenceid
    FROM dtable dtable_1, dtable dtable_2, des_v1 desv1, des_d desd,dtableaxe, dtable comp ,dtable emploi
    WHERE dtable_1.id = desv1.id_pere
    AND  desd.id_desc IN (1106778)
    AND desd.id_volet IN (830018, 830022, 830020)
    AND desv1.id = desd.id_volet
    AND desd.id_table = dtable_2.id
    AND dtable_1.tc = 'DESC.NOMGPE2'
    AND desv1.type = 'COMP'
    AND axe.nom_table = 'REFCOMP0'
    AND axe.id =comp.lien
    AND comp.nom_table = 'REFCOMP1'
    AND dtable_2.lien=comp.id
    AND desd.id_desc=emploi.id
    UNION
    SELECT DISTINCT axe.id idAxe, axe.des desAxe, comp.des competencedes, dtable1.lien competenceid
    FROM dtable dtable1, pers_v persv, volet volet1,pers pers1,dtable comp,dtable axe
    WHERE dtable1.id = persv.id_table
    AND  persv.id_pers IN (1828)
    AND persv.id_volet IN (162162, 162166, 162164)
    AND volet1.type = 'COMP'
    AND persv.id_volet = volet1.id 
    AND persv.id_pers = pers1.id
    AND dtable1.lien =comp.id
    AND axe.id =comp.lien) tmp
     
     ORDER BY desAxe,competencedes

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

Discussions similaires

  1. Requêtes SQL pour les Dates et numériques
    Par Ramage03 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/03/2006, 17h26
  2. [MySQL] Erreur sql pour inserer des checkbox
    Par digger dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/11/2005, 11h06
  3. Utlisation d'image pour les <li> qui ne marche pas
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/11/2005, 17h37

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