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

Requêtes MySQL Discussion :

Erreur de syntaxe en SQL


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut Erreur de syntaxe en SQL
    Bonjour;

    Ma requete Sql affiche toujours ce message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1- [dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [/App] threw exception [Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query] with root cause
    2-  o.h.engine.jdbc.spi.SqlExceptionHelper   :Column 'id_equip1_3_0_' not found..
    3-  org.hibernate.exception.SQLGrammarException: could not execute query
    *

    Voici mon code :
    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
     
     public List<Equip> ListEquipements( long idEqp, long idmiss){
     
    		  Query query = manager.createNativeQuery("SELECT"
    	   		+ " checksl.id_check_lists as IdCheckLists,"
    	   		+ " checksl.titre_check as NomCheckLists,"
    	   		+ " checksl.recommendation as Recommendation, "
    	   		+ " resp.id_responsescheck as IdResponse, "
    	   		+ " resp.conformite as Conformite, "
    	   		+ " resp.date_response as DateResponse, "
    	   		+ " resp.missions_id as IdMission "
    	   		+ " FROM equipements eq "
    	   		+ " LEFT JOIN check_lists checksl"
    	   		+ " ON eq.id_equipements= checksl.equipements_id "
    	   		+ " LEFT JOIN responses_check_lists resp "
    	   		+ " ON checksl.id_check_lists = resp.check_lists_id "
    	   		+ " AND resp.missions_id ="+idmiss+""
    	   		+ " AND eq.id_equipements ="+idEqp
    	   		+ " ORDER BY checksl.id_check_lists",
    	   		"EquipementsMapping");
     
    	   List<Equip> res = query.getResultList();
     
    	   return res;
    	   );
       }
    Mes tables:
    Nom : 4807256301.png
Affichages : 331
Taille : 34,4 Ko

    Nom : 4476206602.png
Affichages : 313
Taille : 37,3 Ko

    Nom : 2328558603.png
Affichages : 306
Taille : 13,0 Ko

    Merci de m'aider pour résoudre ce problème,

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Visiblement, le message d'erreur concerne une autre requête que celle que vous avez publiée : la colonne incriminée n'est pas utilisée dans cette requête...

    De plus, dans la requête publiée, de nombreux noms de colonne ne sont pas préfixés par l'alias de la table ou de la vue, c'est risqué et ça nuit à la compréhension

  3. #3
    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 801
    Points
    30 801
    Par défaut
    La première chose à faire face à ce type de problème, c'est d'afficher le texte de la requête pour la relire avant de l'exécuter.
    Cela permet de mettre en évidence des erreurs d'enchainements de guillemets, oublis d'espaces entre mots et autres fautes de frappe.
    On peut aussi copier cette requête préparée dans un interpréteur pour récupérer le message d'erreur émis directement par le SGBD.
    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.

  4. #4
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    La première chose à faire face à ce type de problème, c'est d'afficher le texte de la requête pour la relire avant de l'exécuter.
    Cela permet de mettre en évidence des erreurs d’enchaînements de guillemets, oublis d'espaces entre mots et autres fautes de frappe.
    On peut aussi copier cette requête préparée dans un interpréteur pour récupérer le message d'erreur émis directement par le SGBD.
    Voici le text d'exécution de la requête SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Hibernate: select responsesc0_.check_lists_id as check_li4_6_0_, responsesc0_.id_responsescheck as id_respo1_6_0_, responsesc0_.id_responsescheck as id_respo1_6_1_, responsesc0_.check_lists_id as check_li4_6_1_, responsesc0_.missions_id as missions5_6_1_, responsesc0_.conformite as conformi2_6_1_, responsesc0_.date_response as date_res3_6_1_, missions1_.id_mission as id_missi1_5_2_, missions1_.date_debut as date_deb2_5_2_, missions1_.date_fin as date_fin3_5_2_, missions1_.description as descript4_5_2_, missions1_.etat_mission as etat_mis5_5_2_, missions1_.nom_mission as nom_miss6_5_2_, missions1_.societe_id as societe_7_5_2_, societeaud2_.id_societe as id_socie1_8_3_, societeaud2_.date_ajout_societe as date_ajo2_8_3_, societeaud2_.adresse as adresse3_8_3_, societeaud2_.logo as logo4_8_3_, societeaud2_.mail_contact as mail_con5_8_3_, societeaud2_.nom_societe as nom_soci6_8_3_, societeaud2_.responsable_securite as responsa7_8_3_, societeaud2_.secteur as secteur8_8_3_, societeaud2_.tel_responsable as tel_resp9_8_3_, societeaud2_.tel_societe as tel_soc10_8_3_ from responses_check_lists responsesc0_ left outer join missions missions1_ on responsesc0_.missions_id=missions1_.id_mission left outer join societe_auditee societeaud2_ on missions1_.societe_id=societeaud2_.id_societe where responsesc0_.check_lists_id=?
    Citation Envoyé par al1_24 Voir le message
    On peut aussi copier cette requête préparée dans un interpréteur pour récupérer le message d'erreur émis directement par le SGBD.
    J'ai tester la requête dans le SGBD phpMyadmin et j'ai obtenu de bon resultats:
    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
    SELECT checks.titre_check as NomCheckLists,
    checks.recommendation as Recommendation, 
    resp.id_responsescheck as IdResponse, 
    resp.conformite as Conformite,
    resp.date_response as DateResponse,
    resp.missions_id as IdMission,
    checks.id_check_lists as IdCheckLists 
    FROM equipements eq 
    LEFT JOIN check_lists checks
     ON eq.id_equipements= checks.equipements_id
    LEFT JOIN responses_check_lists resp
    ON checks.id_check_lists = resp.check_lists_id
    AND resp.missions_id = 15
     AND eq.id_equipements = 1
     ORDER BY checks.id_check_list
    Voici un imprime écran :
    Nom : 01.png
Affichages : 309
Taille : 54,2 Ko


    Aprés exécution le problème est toujours affiché:

    2- o.h.engine.jdbc.spi.SqlExceptionHelper :Column 'id_equip1_3_0_' not found..
    Merci ,

  5. #5
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,
    De plus, dans la requête publiée, de nombreux noms de colonne ne sont pas préfixés par l'alias de la table ou de la vue, c'est risqué et ça nuit à la compréhension
    Quel colonne tu parle qui ne sont pas préfixés par l'alias dans ma requête SQL ?

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par syrine01 Voir le message
    Quel colonne tu parle qui ne sont pas préfixés par l'alias dans ma requête SQL ?
    Regardez l'order by dans votre 1er post

  7. #7
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Regardez l'order by dans votre 1er post
    dans la clause d'order by : + " ORDER BY checksl.id_check_lists", "EquipementsMapping"); ,Aprés le virgule représente le mapping de résultat de la requête SQl (@SqlResultSetMapping).

    le checksl est destiné pour la table " check_lists" -> LEFT JOIN check_lists checkslvois-tu un problème de la syntaxe? laquelle?

  8. #8
    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 801
    Points
    30 801
    Par défaut
    Mais la requête que tu affiches dans ton programme n'est pas la même que celle que tu exécutes dans l'interpréteur
    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.

  9. #9
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Mais la requête que tu affiches dans ton programme n'est pas la même que celle que tu exécutes dans l'interpréteur
    si la même requête SQl que je suis entrain d'utiliser sauf que j'ai pris la requête et j'ai mis des paramètres manuellement pour voir le résultat final.

  10. #10
    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 801
    Points
    30 801
    Par défaut
    Cette 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
     
    Hibernate:
    select responsesc0_.check_lists_id as check_li4_6_0_,
    responsesc0_.id_responsescheck as id_respo1_6_0_,
    responsesc0_.id_responsescheck as id_respo1_6_1_,
    responsesc0_.check_lists_id as check_li4_6_1_,
    responsesc0_.missions_id as missions5_6_1_,
    responsesc0_.conformite as conformi2_6_1_,
    responsesc0_.date_response as date_res3_6_1_,
    missions1_.id_mission as id_missi1_5_2_,
    missions1_.date_debut as date_deb2_5_2_,
    missions1_.date_fin as date_fin3_5_2_,
    missions1_.description as descript4_5_2_,
    missions1_.etat_mission as etat_mis5_5_2_,
    missions1_.nom_mission as nom_miss6_5_2_,
    missions1_.societe_id as societe_7_5_2_,
    societeaud2_.id_societe as id_socie1_8_3_,
    societeaud2_.date_ajout_societe as date_ajo2_8_3_,
    societeaud2_.adresse as adresse3_8_3_,
    societeaud2_.logo as logo4_8_3_,
    societeaud2_.mail_contact as mail_con5_8_3_,
    societeaud2_.nom_societe as nom_soci6_8_3_,
    societeaud2_.responsable_securite as responsa7_8_3_,
    societeaud2_.secteur as secteur8_8_3_,
    societeaud2_.tel_responsable as tel_resp9_8_3_,
    societeaud2_.tel_societe as tel_soc10_8_3_
    from responses_check_lists responsesc0_
    left outer join missions missions1_
    on responsesc0_.missions_id=missions1_.id_mission
    left outer join societe_auditee societeaud2_
    on missions1_.societe_id=societeaud2_.id_societe
    where responsesc0_.check_lists_id=?
    est la même que celle-là :
    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
    SELECT checks.titre_check as NomCheckLists,
    checks.recommendation as Recommendation, 
    resp.id_responsescheck as IdResponse, 
    resp.conformite as Conformite,
    resp.date_response as DateResponse,
    resp.missions_id as IdMission,
    checks.id_check_lists as IdCheckLists 
    FROM equipements eq 
    LEFT JOIN check_lists checks
     ON eq.id_equipements= checks.equipements_id
    LEFT JOIN responses_check_lists resp
    ON checks.id_check_lists = resp.check_lists_id
    AND resp.missions_id = 15
     AND eq.id_equipements = 1
     ORDER BY checks.id_check_list
    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.

  11. #11
    Membre habitué
    Femme Profil pro
    Architecte de système d'information
    Inscrit en
    Février 2012
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2012
    Messages : 404
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Hibernate:
    select responsesc0_.check_lists_id as check_li4_6_0_,
    responsesc0_.id_responsescheck as id_respo1_6_0_,
    responsesc0_.id_responsescheck as id_respo1_6_1_,
    responsesc0_.check_lists_id as check_li4_6_1_,
    .......
    Tu as raison, j'ai m’excuse

    vraiment j'ai perturbé la concentration entre ce que j'ai mis ici et ce que je suis entrain de tester.

    j'ai mis a jour le 1ére post en mettant la requête SQL en cours.

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    C'est la raison pour laquelle j'avais écrit :

    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Visiblement, le message d'erreur concerne une autre requête que celle que vous avez publiée : la colonne incriminée n'est pas utilisée dans cette requête...

    De plus, dans la requête publiée, de nombreux noms de colonne ne sont pas préfixés par l'alias de la table ou de la vue, c'est risqué et ça nuit à la compréhension

Discussions similaires

  1. [AC-2007] Erreur de syntaxe sur sql
    Par Rogatic dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 22/10/2013, 14h06
  2. [AC-2010] Erreur de syntaxe dans sql
    Par Guy FALESSE dans le forum IHM
    Réponses: 5
    Dernier message: 06/05/2013, 09h28
  3. [MySQL] [MySql/PHP] Erreur de syntaxe requete SQL
    Par PooSoft dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/05/2012, 16h29
  4. [sql] erreur de syntaxe
    Par cmoa59 dans le forum JDBC
    Réponses: 14
    Dernier message: 03/05/2005, 11h41
  5. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09

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