Bonjour,
Je cherche à modifier l'ordre des jointures dans une requete générée par Propel
Voici la structure de ma base

tableFAMILLE [ id, name ]
tableMEMBRE [ id, famille_id, name ]
tableBIDON [ id ]
une requete, simple, me permettant de récupérer les membres d'une famille serait

select * from famille, membre where membre.famille_id = famille.id and famille.id = 4
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 join membre on (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.
Cela me permet d'écrire (et d'optimiser) ma requête ainsi :

select * from bidon
join famille on (famille.id=4)
join membre on (membre.famille_id = famille.id)
J'aimerais traduire cette requete avec Propel, pour récupérer une liste de membres.
Je peux tenter un :

$c = new Criteria();
$c->addJoin( BidonPeer::ID, FamillePeer::ID, Criteria::JOIN );
$c->addJoin( MembrePeer::FAMILLE_ID, FamillePeer::ID, Criteria::JOIN );
MembrePeer::doSelect($c)
Mais la requete générée ne ressemble pas à ma requete 'idéale'
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