array( 'Event.execute_date < NOW()', 'Event.is_triggered' => 0 ), 'fields' => 'Event.campaign_id', 'recursive' => -1 ); $campaign_ids_sql = $this->Event->find('sql', $event_options); // SELECT `Event`.`campaign_id` FROM `events` AS `Event` // WHERE `Event`.`execute_date` < NOW() // AND `Event`.`is_triggered` = 0 $user_options = array( 'conditions' => array( 'Group.campaign_id IN ('.$campaign_ids_sql.')' ), 'contain' => 'Group', 'fields' => 'User.id' ); $user_ids = $this->User->find('all', $user_options); // SELECT `User`.`id` FROM `users` AS `User` // LEFT JOIN `groups` AS `Group` ON (`User`.`group_id` = `Group`.`id`) // WHERE `Group`.`campaign_id` IN ( // SELECT `Event`.`campaign_id` FROM `events` AS Event // WHERE `Event`.`execute_date` < NOW() AND `Event`.`is_triggered` = 0 // ) ?>