Pblm de select dans deux tables
mozhar
-
mpmp93 Messages postés 6648 Date d'inscription Statut Membre Dernière intervention -
mpmp93 Messages postés 6648 Date d'inscription Statut Membre Dernière intervention -
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 = ?))))")
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 = ?))))")
A voir également:
- Pblm de select dans deux tables
- Comment faire deux colonnes indépendantes dans word - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Tables des matières word - Guide
- Sms deux ronds - Forum Xiaomi