Criterion pour requete OR
Bonjour,
Voilà une demi journée que j'ai ce problème.
Je souhaite arriver a une requete de ce type :
Code:
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
); |
J'ai beau essayer avec les criterions, rien n'y fait, j'ai toujours un 'AND' sur le dernier...
Code:
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); |
Le problème se situe au moment de combiner les criterions entre eux...
Cette solution me fait une requete tout bizarre. (avec remplacement de tout les HistoriquePeer::idliste par des valeurs => group.WORK_ET2=:p3 )
Code:
1 2 3 4 5 6 7
|
$cton0->addOr($cton1);
$cton0->addOr($cton2);
$cton0->addOr($cton3);
$cton0->addOr($cton4);
$c->addOr($cton0); |
Celle-ci me fait un requete de ce genre :
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
Code:
1 2 3 4 5 6 7 8
|
$cton0->addOr($cton1);
$cton0->addOr($cton2);
$c->addOr($cton0);
$cton3->addOr($cton4);
$c->addOr($cton3); |
En vous remerciant par avance de vos éclaircissements sur ces satanés criterion. :roll: