Ir ao conteúdo
  • Cadastre-se

smarthome

Membro Júnior
  • Posts

    15
  • Cadastrado em

  • Última visita

  1. Olá amigo, O aplicativo utiliza um software de OCR (Optical Character Recognition) que consegue a partir de uma imagem de um scanner reconhecer os caracteres e criar o texto correspondente. Qualquer scanner vem com software de OCR e quem desenvolveu o aplicativo usou uma API de OCR para isso. Espero ter ajudado. Abs.
  2. Amigo, É simples entender, das duas maneiras o programa soma o último resultado que é 100, só que em um você faz com que ele avance para 101 e não some nada, no outro você para em 100 somando os 100 também. Até 100, ambos irão somar o 100, faça o teste de mesa enviando 100 para a função. Num, ele termina a recursividade e começa a retornar, no outro ele ainda faz uma última chamada para testar por 101, mas como esta retornando 0 então a soma fica igual a da outra função. Abs.
  3. Amigo, Não sei se você já resolveu seu problema, mas gostaria de fazer uma crítica na sua query. Evite fazer o que você esta fazendo, ou seja, sub-select na clausula select, pois para cada registro retornado da clausula from será executado cada sub-select do seu select. No lugar disso você pode muito bem resolver com joins e será muito mais rápido. Vou exemplificar usando o seu próprio select: select j.data , j.jogo_id , man.nome as nome_mandante , man.sigla as sigla_mandante , man.bandeira as bandeira_mandante , vis.nome as nome_visitante , vis.sigla as sigla_visitante , vis.bandeira as bandeira_visitante , j.golsMandante , j.golsVisitante , ft.desc , j.rodada , j.local , man_grp.nome as nome_grupo_mandante , vis_grp.nome as nome_grupo_visitantefrom jogos_table as jinner join times_table as man on man.time_id = j.mandanteinner join grupos_table as man_grp on man_grp.grupo_id = man.grupos_table_grupo_idinner join times_table as vis on man.time_id = j.visitanteinner join grupos_table as vis_grp on vis_grp.grupo_id = vis.grupos_table_grupo_idinner join fase_table as ft on ft.id_fase = j.fase_campeonato_id_fase; Veja que o meu select faz a mesma coisa que o seu de forma muito mais rápida e ainda muito mais elegante e da forma como realmente deve ser feito, inclusive com o grupo do time. Abs.
  4. Amigo, Você deve fazer algo parecido com isso: select id_produto , nome , prd_qtd.qtde_totalfrom ( select id_produto , sum(quantidade) as qtde_total from tbl_item_pedido group by id_produto ) as prd_qtdinner join tbl_produto on id = prd_qtd.id_produtoorder by prd_qtd.qtde_total desc , nome asc; Nessa consulta, não levei em consideração o período dos pedidos e entendo que os produtos mais vendidos são aqueles em que a soma da quantidade em todos os itens são maiores. Ordeno por quantidade decrescente, ou seja, do maior para o menor. Abs.
  5. Amigo, Existem algumas formas e linguagens para programar para a plataforma Android. Sugiro você usar a linguagem nativa. Você vai precisar aprender a programar em Java. Você pode começar pelo site do Android http://developer.android.com/training/index.html E no Techotopia http://www.techotopia.com/index.php/Free_Android_Development_eBooks Além de alguns tutoriais de java no site da Oracle http://docs.oracle.com/javase/tutorial/ Abs.
  6. Olá amigo, Você pretende usar banco de dados? Se sim, qual linguagem vai usar para a programação dinâmica? Abs.
  7. Amigo, Sua query pode estar certa ou errada, depende do que você esta querendo dizer com: Listar os departamentos onde os seus funcionários (em conjunto) trabalham em mais de dois projetos simultaneamente Pelo que entendi e o que você fez, se você tem um projeto e dois funcionarios que trabalham no mesmo projeto, o depto será listado, ou seja, você lista o depto/projeto que tenha duas pessoas diferentes nele. Se você quer que um funcionário trabalhe em dois projetos, precisa mudar seu group by.
  8. Amigo, apenas para complementar o que você já respondeu perguntando e o que o dif respondeu, se você vai gravar poucas informações locais e não necessita de pesquisas elaboradas o arquivo texto te atende. Mas um banco de dados é necessário para manter muitos diferentes tipos e quantidade de informações em um repositório que possa ser acessado por muitas requisições ao mesmo tempo, de usuários diferentes, com segurança, performance, além de permitir diversos tipos de consulta. Se você for tentar escrever algo parecido, você estara escrevendo um banco de dados então é mais fácil usar um que já existe. Espero tê-lo ajudado. Abs.
  9. Olá amigo, Acho que há um erro conceitual na sua proposição. Me parece que são informações diferentes, ou seja, nota fiscal não tem nada a ver com pedido, assim como cupom e nota de entrada. Um pedido não tem informações fiscais, já a nota tem. Você não deve misturar essas informações do contrário para que criar tabelas para cada tipo de informação? Analise os campos de cada tabela e veja se são exatamente os mesmos, acredito que não, então, você não deveria juntar tudo em uma tabela única. Abs.
  10. Amigo, Você precisa apenas fazer um join nas duas views, porém, é preciso saber quais os campos que se relacionam para não gerar plano cartesiano. Vamos imaginar que o id do usuário seja suficiente para o relacionamento, então você apenas faz o join com as duas views: select vw_usuario.* , vw_monitor.num_guiche , vw_monitor.num_senha , vw_monitor.atividade , vw_monitor.servicos , vw_monitor.tempo_atividadefrom view_usuario as vw_usuarioleft join view_monitor_atendente as vw_monitor on vw_monitor.id_usu = vw_usuario.id_usu Aqui vai uma observação. Eu usei left join no lugar do inner join, pois, caso não exista monitor atendente para o usuário ele irá trazer os usuário mesmo assim. Se você quer trazer apenas os usuários que são monitor atendente, então você deve usar inner join. Abs.
  11. Olá amigo, Vou tentar responder suas dúvidas. 1) Quando um usuário se loga no sistema, provavelmente com login ou email que são campos textos, você deve validar o usuário e a senha. Uma vez validado o usuário e senha, você deve guardar na memória do servidor o usuário da sessão (id dele). Existem outras formas de fazer a mesma coisa, por exemplo: Você pode ter um campo de id da sessão na tabela de usuário e atualizar com o id da sessão do usuário logado, então em toda requisição você busca o id da sessão na tabela do usuário pelo id de sessão que o browser enviou. Você também poderia guardar o id do usuário em um cookie no browser e pegar esse id em toda a requisição. Você também pode trafegar o id do usuário em todas as requisições em campos hidden. Eu utilizo a primeira opção, ou seja, após o usuário se logar, eu guardo o id dele na sessão do servidor. Não se deve guardar muita coisa na sessão para não ocupar a memória do servidor que geralmente é baixa. 2) Você não grava em tabelas diferentes de uma vez. Não tem um comando para fazer isso. Você grava tabela por tabela. O que você precisa fazer é criar uma transação e dentro da transação você vai enviar cada comando para o banco. No final você faz o commit ou, se der erro, você captura o erro (catch) e faz o rollback. Provavelmente o id do anunciante é um campo serial ou auto incremento. Então você não passa esse campo no seu insert do anunciante, para que o mysql automaticamente insira o próximo. Depois que você inseriu na tabela de anunciante, você deve executar um outro comando para obter o último serial inserido para a conexão, ou seja, exatamente o id do anunciante que acabou de inserir. Para obter ele você executa a função LAST_INSERT_ID(). SELECT LAST_INSERT_ID(); Então você pode inserir nas outras tabelas usando o ID retornado pela função. Abs.
  12. Caro amigo, O problema é porque você esta comparando Nome da Editora com o Código da Editora, então o join não retorna nenhum registro. Where nome_editora = cod_editora O amigo Erciley Junior montou o join corretamente. Abs.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...