Подвыборка базы данных Rose (вложенный запрос) при выборе

Я пытаюсь выполнить запрос, в котором есть подвыбор. Я настроил метод диспетчера, и все работает нормально. Единственная проблема - я не знаю, как продолжить этот запрос:

SELECT * FROM tableA WHERE 
          name = 'Me' AND 
          class='Tester' AND 
          ( ( Department IN ( SELECT Department FROM 
                                     tableB WHERE 
                                     leader = 'Joe')  
                             OR 
              Leader  in ('','all')  )
         );

Важно помнить, что tableA и tableB - это две разные таблицы. На данный момент я достиг этого запроса:

my @leader = ('','all');

DB::tableA::Manager->get_tableA ( with_object => ['tableB'] , 
             query => [ name => 'Me',
                        class => 'Tester',
                        OR => [
                              leader => \@leader,
                              Department => [*** this is
     where i have to make the sub select. 
     Dont know how though **** ]
          ]
        ], 
debug => 1);

пожалуйста, помогите, чтобы я мог добавить этот подзапрос к этому основному запросу

заранее спасибо

1 ответ

Вы можете использовать clauses функция для включения произвольных предложений в запрос WHERE часть.

Это будет выглядеть так

DB::tableA::Manager->get_tableA ( with_object => ['tableB'] , 
  query => [ 
    name => 'Me',
    class => 'Tester',
  ],
  clauses => ["( Department IN ( SELECT Department FROM tableB WHERE leader = 'Joe' ) OR Leader  in ('','all') )"
);

CPAN: Rose::DB::Object::QueryBuilder, Функции

Другие вопросы по тегам