Conheça as melhorias da versão 8.0, 8.1, 8.2!
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. TTransaction::open('sgd');
  5. $repository = new TRepository('Servico');
  6. $criteria1 = new TCriteria;
  7. $criteria1->add(new TFilter('id_veiculo', '=', $request['id_veiculo']));
  8. $criteria1->add(new TFilter('data_aceite', '=', '0000-00-00 00:00:00'));
  9. $criteria2 = new TCriteria;
  10. $criteria2->add(new TFilter('id_veiculo', '=', '0'));
  11. $criteria = new TCriteria;
  12. $criteria->setProperty('limit', '1');
  13. $criteria->add($criteria1, TExpression::OR_OPERATOR);
  14. $criteria->add($criteria2, TExpression::OR_OPERATOR);
  15. $all = $repository->load($criteria);
  16. foreach ($all as $dados)
  17. {
  18. $response[] = $dados->toArray();
  19. }
  20. TTransaction::close();
  21. return $response;
  22. }
  23. ?>

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework 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($criteria1, TExpression::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($criteria1, TExpression::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. $all = $repository->load($final);
  20. foreach ($all as $dados)
  21. {
  22. $response[] = $dados->toArray();
  23. }
  24. TTransaction::close();
  25. return $response;
  26. ?>