Bonjour,
Je cherche à modifier l'ordre des jointures dans une requete générée par Propel
Voici la structure de ma base
une requete, simple, me permettant de récupérer les membres d'une famille seraittableFAMILLE [ id, name ]
tableMEMBRE [ id, famille_id, name ]
tableBIDON [ id ]
J'ai pris l'habitude d'écrire ce genre de requete ainsi (pour limiter le nombre de tuples traitées par la requete SQL) :select * from famille, membre where membre.famille_id = famille.id and famille.id = 4
Pour aller encore plus loin, j'utilise une table BIDON et qui ne contient qu'un seul enregistrement.select * from famille join membre on (membre.famille_id=famille.id and famille.id=4)
Cela me permet d'écrire (et d'optimiser) ma requête ainsi :
J'aimerais traduire cette requete avec Propel, pour récupérer une liste de membres.select * from bidon
join famille on (famille.id=4)
join membre on (membre.famille_id = famille.id)
Je peux tenter un :
Mais la requete générée ne ressemble pas à ma requete 'idéale'$c = new Criteria();
$c->addJoin( BidonPeer::ID, FamillePeer::ID, Criteria::JOIN );
$c->addJoin( MembrePeer::FAMILLE_ID, FamillePeer::ID, Criteria::JOIN );
MembrePeer::doSelect($c)
Comment puis je obtenir ma requête 'optimisée' ?
L'étape la plus difficile est, je crois, de faire en sorte que la requete commence par "select * from bidon" alors que l'on veut remonter des 'membres' :
apparement, le fait de faire un MembrePeer::doSelect($c) impose que la requete commence par "select * from membres", ce qui m'emmerde...
Avez vous des idées ?
JC
Partager