Bonjour à tous,

Je me tourne vers vous car j'ai un doute concernant une requête dans une application web.

Je dois récupérer un champ d'une entité (principale) suivant une condition précise contenue dans d'autres entités liées à mon entité principale.

Je dois récupérer une valeur qui soit sur la base de la date du jour (en prenant uniquement le jour du champ date) d'une entité (E1) liée a l'entité principale, dont la liaison est sous forme de one-to-one.

Ce qui donne ceci :
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 SELECT ent.field
   FROM Entity ent
   WHERE day(ent.ei1.date)= :dayDate
mais je dois aussi utiliser un OR qui va aller dans une autre table (E2) lié via many-to-many avec l'entité principale. Il y a donc une table de liaison contenant les id de chaque table en DB (id_E2 et id_EntitePrincipal).

Et dans cette table je dois vérifier si pour l'entité principale il y a des enregistrements pour le jour passé en paramètre, comme dans la première partie en prenant le plus récent, donc un seul jour dans cette table. Si c'est le cas, récupérer l'ent.field si un enregistrement correspond à la condition.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 SELECT ent.field
   FROM Entity ent
   WHERE day(ent.ei1.date)= :dayDate 
      or exists (
         SELECT day(max(d.beginTime)
            FROM ent.e2 d) = :dayDate
J'ai essayé ceci mais la deuxième partie ne semble pas fonctionner.

Qu'en pensez-vous ?

Merci d'avance pour votre aide.