Bonjour,
Voilà une demi journée que j'ai ce problème.
Je souhaite arriver a une requete de ce type :
J'ai beau essayer avec les criterions, rien n'y fait, j'ai toujours un 'AND' sur le dernier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SELECT h.iddemande FROM Historique h, Groupe g, UserGroupe ug WHERE h.userdemande = ug.user_id AND ug.group_id= g.id AND ( g.work_et1 = h.idliste OR g.work_et2 = h.idliste OR g.work_et3 = h.idliste OR g.work_et4 = h.idliste OR h.iduser = 79 );
Le problème se situe au moment de combiner les criterions entre eux...
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 $c = new Criteria(); $c->setDistinct(); $c->addSelectColumn(HistoriquePeer::IDDEMANDE); $c->addJoin(UserGroupPeer::USER_ID,HistoriquePeer::USER_DEMANDE); $c->addJoin(GroupPeer::ID, UserGroupPeer::GROUP_ID); $cton0= $c->getNewCriterion(HistoriquePeer::USER_DEMANDE, $id_user); $cton1 = $c->getNewCriterion(GroupPeer::WORK_ET1, HistoriquePeer::IDLISTE); $cton2 = $c->getNewCriterion(GroupPeer::WORK_ET2, HistoriquePeer::IDLISTE); $cton3 = $c->getNewCriterion(GroupPeer::WORK_ET3, HistoriquePeer::IDLISTE); $cton4 = $c->getNewCriterion(GroupPeer::WORK_ET4, HistoriquePeer::IDLISTE); $cton0->addOr($cton1); $cton0->addOr($cton2); $cton0->addOr($cton3); $cton0->addOr($cton4); $c->addOr($cton0); $demandes_id = HistoriquePeer::doSelect($c);
Cette solution me fait une requete tout bizarre. (avec remplacement de tout les HistoriquePeer::idliste par des valeurs => group.WORK_ET2=:p3 )
Celle-ci me fait un requete de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $cton0->addOr($cton1); $cton0->addOr($cton2); $cton0->addOr($cton3); $cton0->addOr($cton4); $c->addOr($cton0);
WHERE ((HISTORIQUE.USER_DEMANDE=79 OR group.WORK_ET1='HISTORIQUE.IDLISTE') OR group.WORK_ET2='HISTORIQUE.IDLISTE')
AND (group.WORK_ET3='HISTORIQUE.IDLISTE' OR group.WORK_ET4='HISTORIQUE.IDLISTE')
Et je ne veux pas de ce AND, mais que des OR
En vous remerciant par avance de vos éclaircissements sur ces satanés criterion.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $cton0->addOr($cton1); $cton0->addOr($cton2); $c->addOr($cton0); $cton3->addOr($cton4); $c->addOr($cton3);![]()
Partager