requete particulière avec Propel
Posté : 08 déc. 2010, 13:10
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 serait
J'ai pris l'habitude d'écrire ce genre de requete ainsi (pour limiter le nombre de tuples traitées par la requete SQL) :
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 :
J'aimerai traduire cette requete avec Propel, pour récupérer une liste de membres.
Je peux tenter un :
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
Je cherche à modifier l'ordre des jointures dans une requete générée par Propel
Voici la structure de ma base
Code : Tout sélectionner
tableFAMILLE [ id, name ]
tableMEMBRE [ id, famille_id, name ]
tableBIDON [ id ]Code : Tout sélectionner
select * from famille, membre where membre.famille_id = famille.id and famille.id = 4Code : Tout sélectionner
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 :
Code : Tout sélectionner
select * from bidon
join famille on (famille.id=4)
join membre on (membre.famille_id = famille.id)Je peux tenter un :
Code : Tout sélectionner
$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