Pblm de select dans deux tables

Fermé
mozhar - 28 févr. 2014 à 07:01
mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 1 mars 2014 à 21:08
Bonjour,
je cherche une lise des comptes qui n'ont pas de solde pendant un mois sanchant que j'ai deux table la premiere est table Solde avec les champs (mois, solde et compte qui est cle etrangere) et la deusiemme table compte des champs(rib,debut, fin ect..)
et voila ma requete

SELECT c "
+ "FROM Compte c "
+ "WHERE c.debut <= :mois "
+ "AND c.fin >= :mois "
+ "AND ( NOT c IN "
+ "(SELECT b.compte \n "
+ "FROM Solde b \n "
+ "WHERE b.mois = :mois)) ")
.setParameter("mois", date)
.getResultList();


et voila le message eurreur " Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IN (SELECT t1.ref, t1.date_creation, t1.date_modification, t1.debut, t1.deleted,' at line 1
Error Code: 1064
Call: SELECT t0.ref, t0.date_creation, t0.date_modification, t0.debut, t0.deleted, t0.fin, t0.label, t0.localite, t0.rib, t0.bureau_creation, t0.bureau_modification, t0.centre, t0.user_createur, t0.user_modificateur FROM compte t0 WHERE (((t0.debut <= ?) AND (t0.fin >= ?)) AND NOT ( IN (SELECT t1.ref, t1.date_creation, t1.date_modification, t1.debut, t1.deleted, t1.fin, t1.label, t1.localite, t1.rib, t1.bureau_creation, t1.bureau_modification, t1.centre, t1.user_createur, t1.user_modificateur FROM solde t2 LEFT OUTER JOIN compte t1 ON (t1.ref = t2.compte) WHERE (t2.mois = ?))))
bind => [3 parameters bound]
Query: ReadAllQuery(referenceClass=Compte sql="SELECT t0.ref, t0.date_creation, t0.date_modification, t0.debut, t0.deleted, t0.fin, t0.label, t0.localite, t0.rib, t0.bureau_creation, t0.bureau_modification, t0.centre, t0.user_createur, t0.user_modificateur FROM compte t0 WHERE (((t0.debut <= ?) AND (t0.fin >= ?)) AND NOT ( IN (SELECT t1.ref, t1.date_creation, t1.date_modification, t1.debut, t1.deleted, t1.fin, t1.label, t1.localite, t1.rib, t1.bureau_creation, t1.bureau_modification, t1.centre, t1.user_createur, t1.user_modificateur FROM solde t2 LEFT OUTER JOIN compte t1 ON (t1.ref = t2.compte) WHERE (t2.mois = ?))))")

1 réponse

mpmp93 Messages postés 6648 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
1 mars 2014 à 21:08
Bonjour,

LA réponse est dans le message d'erreur: "You have an error in your SQL syntax;"

Reprenez la requête SQL et exécutez la manuellement au travers de phpMyAdmin

A+
0