Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Como fazer um select not in to select ? Olá galera. Estou com uma duvida de como fazer um select buscar dados dentro de outro select. Resolvi a primeira parte, mas não soube fazer o NOT IN SELECT ..... Segue o select em instrução pura SQL. Os parâmetros estão em caixa alta. Eu consegui fazer a primeira parte do select e vou deixar o codigo de como eu fiz. Estou precisando só fazer o segundo SELECT. Se alguem puder me dar uma lu...
CC
Como fazer um select not in to select ?  
Olá galera. Estou com uma duvida de como fazer um select buscar dados dentro de outro select. Resolvi a primeira parte, mas não soube fazer o NOT IN SELECT .....
Segue o select em instrução pura SQL. Os parâmetros estão em caixa alta. Eu consegui fazer a primeira parte do select e vou deixar o codigo de como eu fiz. Estou precisando só fazer o segundo SELECT. Se alguem puder me dar uma luz, vou ficar muito agradecido. Esse método está rodando em um Restful Server

select * from servico where ((id_veiculo = W_VEICULO and data_aceite='0000-00-00 00:00:00') or id_veiculo = 0) and W_VEICULO not in
(select id_veiculo from servico_rejeitado where id_servico = W_SERVICO)

  1. <?php
  2.  public static function onCheckNewService$request )
  3.     {
  4.     
  5.         TTransaction::open('sgd');
  6.         
  7.         $repository = new TRepository('Servico');
  8.         
  9.         
  10.         $criteria1 = new TCriteria;
  11.         $criteria1->add(new TFilter('id_veiculo',  '='$request['id_veiculo'])); 
  12.         $criteria1->add(new TFilter('data_aceite''=''0000-00-00 00:00:00')); 
  13.         $criteria2 = new TCriteria
  14.         $criteria2->add(new TFilter('id_veiculo',  '=''0')); 
  15.  
  16.         $criteria = new TCriteria;
  17.         $criteria->setProperty('limit''1');     
  18.         $criteria->add($criteria1TExpression::OR_OPERATOR); 
  19.         $criteria->add($criteria2TExpression::OR_OPERATOR); 
  20.          
  21.         $all $repository->load($criteria); 
  22.             
  23.         foreach ($all as $dados)
  24.         {
  25.             $response[] = $dados->toArray();
  26.         }
  27.         
  28.         TTransaction::close();
  29.         return $response;
  30.         
  31.     }
  32.     ?>

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (2)


LA

ola Claudio!
deve ser isso :)

  1. <?php
  2.           $criteria1->add(new TFilter('id_veiculo''='$request['id_veiculo']));
  3.           $criteria1->add(new TFilter('data_aceite''=''0000-00-00 00:00:00'));
  4.           $criteria2->add(new TFilter('id_veiculo''='0));
  5.           $criteria2->add($criteria1TExpression::OR_OPERATOR);
  6.           $criteria3->add($criteria2);
  7.           $criteria4->add(new TFilter($request['id_veiculo'], 'NOT IN''(SELECT id_veiculo FROM servico_rejeitado WHERE id_servico =' .
  8.           $request['id_veiculo'] . ')'));
  9.         $final->add($criteria3);
  10.         $final->add($criteria4);
  11.         $final->setProperty('limit'1);
  12.         echo $final->dump();
  13. ?>
CC

Luis Alberto, muito obrigado. Eu cometi um erro no select que enviei. Na verdade o segundo select é:
SELECT id_veiculo FROM servico_rejeitado WHERE id_servico = servico.id_servico


Mas voce conseguiu me passar o conceito de como usar o TCriteria. Ficou bem mais claro para mim. Aqui na minha versão do Adianti, eu tive que instanciar cada objeto TCriteria antes de usá-lo, senão dava erro. Segue o codigo final:

  1. <?php
  2.         TTransaction::open('sgd');
  3.         $repository = new TRepository('Servico');
  4.         $criteria1 = new TCriteria;
  5.         $criteria2 = new TCriteria;
  6.         $criteria3 = new TCriteria;
  7.         $criteria4 = new TCriteria;
  8.         $final = new TCriteria;
  9.         $criteria1->add(new TFilter('id_veiculo''='$request['id_veiculo']));
  10.         $criteria1->add(new TFilter('data_aceite''=''0000-00-00 00:00:00'));
  11.         $criteria2->add(new TFilter('id_veiculo''='0));
  12.         $criteria2->add($criteria1TExpression::OR_OPERATOR);
  13.         $criteria3->add($criteria2);
  14.         $criteria4->add(new TFilter($request['id_veiculo'], 'NOT IN''(SELECT id_veiculo FROM servico_rejeitado WHERE id_servico = servico.id_servico)'));
  15.         $final->add($criteria3);
  16.         $final->add($criteria4);
  17.         $final->setProperty('limit'1);
  18.         //echo $final->dump();
  19.         
  20.         $all $repository->load($final); 
  21.             
  22.         foreach ($all as $dados)
  23.         {
  24.             $response[] = $dados->toArray();
  25.         }
  26.         
  27.         TTransaction::close();
  28.         return $response;
  29. ?>