Bonjour, Amine la deuxieme methode que t'as mentionné a bien marché en fin j ai mis fait la requette suivante qui fonctionne aussi.
SELECT * FROM machines, appels where machines.name = appels.machine_name and appells.date > '2009-02-15 00:00:00' AND count(appels.machine_name) = 0 GROUP BY appels.machine_name Merci 2009/2/15 Mehdi AMINI <joker....@gmail.com>: > > > >> j utilise l association avec machine_name étant que foreign key, mais >> ce que je veux maintenant c est lister les machines qui n' ont pas appelé > > Ca fonctionne si machine_name est primary dans "machines". > > Si j'ai bien compris, ton problème est que la liaison est "Machine > hasMany Appel" . Or ceci génère 2 requêtes et donc ne permet pas de > filtrer. CounterCache ne t'aidera pas puisque tu veux pouvoir spécifier > des dates pour les appels. > La seule solution que je vois est une requête perso du genre : > > $this->Machine->query("Select * from machines where name not in (select > machine_name from appels where date < .... and date > .... )"); > > Tu peux aussi le faire en 2 fois sans ecrire de requête SQL, genre : > > $appels=Set::combine($this->Appel->find('all',array('conditions'=>array('Appel.date'=> > .... ))), > '{n}.Appel.id', > array('%s','{n}.Appel.machine_name')) > $machines = > $this->Machine->find('all',array('conditions'=>array('NOT'=>array('Machine.name'=>$appels)))); > > > > > Mehdi > > > > > --~--~---------~--~----~------------~-------~--~----~ Groupe "Cakephp-fr". Adresse : cakephp-fr@googlegroups.com Pour résilier : cakephp-fr-unsubscr...@googlegroups.com Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr -~----------~----~----~----~------~----~------~--~---