Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] resultado de select (sqlite) muito demorado

2 coisas ai sao pesadas...

DISTINCT e LEFT JOIN...

2012/6/29 Gustavo A <gustavoatm@gmail.com>
Não tem like. Vou passar o o metodo.
Vou colocar indice e retorno falando o resultado, mas so segunda feira
Segue abaixo:
 

private

void preencherSolicitacoes(){

String sql =

"";

bancoDados = getApplicationContext().openOrCreateDatabase(Util.getNomeBanco(),MODE_PRIVATE,null);

sql =

"SELECT DISTINCT "+

" solicitacao.id, solicitacao.id_siapi, solicitacao.ano, solicitacao.tipo_de_servico, solicitacao.protocolo "+

" ,pessoa_fisica.nome_do_solicitante razao_social, ' ' nome_fantasia, pessoa_fisica.nome_do_responsavel responsavel, pessoa_fisica.cpf cnpj "+

" ,edificacao.id edificacao ,edificacao.logradouro, edificacao.quadra, edificacao.lote, edificacao.numero numero_edificacao " +

" ,edificacao.area_construida, edificacao.carga_de_incendio "+

" ,obm.id obm, obm.cep obm_cep, obm.apto obm_apto, obm.lote obm_lote, obm.nome obm_nome, obm.quadra obm_quadra, obm.rua obm_rua " +

" ,obm.sigla obm_sigla "+

" ,(select bairro.nome from obm, bairro where obm.bairro = bairro.id and obm.id = solicitacao.obm_de_atendimento) obm_bairro "+

" ,(select municipio.nome from obm, municipio where obm.municipio = municipio.id and obm.id = solicitacao.obm_de_atendimento) obm_municipio "+

" ,bairro.nome bairro "+

" ,municipio.nome municipio "+

" ,telefone.numero telefone "+

" FROM pessoa_fisica "+

" LEFT JOIN solicitacao ON (solicitacao.solicitante = pessoa_fisica.id) "+

" LEFT JOIN edificacao ON (solicitacao.edificacao = edificacao.id) "+

" LEFT JOIN bairro ON (edificacao.bairro = bairro.id) "+

" LEFT JOIN municipio ON (edificacao.municipio = municipio.id) "+

" LEFT JOIN solicitante_telefones ON (solicitante_telefones.solicitante = pessoa_fisica.id) "+

" LEFT JOIN telefone ON (solicitante_telefones.telefone = telefone.id) "+

" LEFT JOIN obm ON (obm.id = solicitacao.obm_de_atendimento)";

try{

cursor = bancoDados.rawQuery(sql ,new String [] {});

if(cursor.getCount() > 0){

cursor.moveToFirst();

preencheDadosInspecao();

btRealizarInspecao.setEnabled(true);

btInspecaoAnterior.setEnabled(true);

btProximaInspecao.setEnabled(true);

}

else{

Util.mensagemExibir(Inspecoes.

this, "Inspeção", "Não há inspeções carregadas");

}

}

catch(Exception ex) {

Util.mensagemExibir(Inspecoes.

this, "Inspeção", "Não há inspeções carregadas");

}

finally{

bancoDados.close();

}

}

 

Ate mais e antecipo meus agradecimentos,

Gustavo Moura


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário