Ir para conteúdo

POWERED BY:

  • ×   Você colou conteúdo com formatação.   Remover formatação

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

  • Conteúdo Similar

    • Por Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT ticket.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
    • Por Luiz Henrique
      Olá pessoas,
       
      Preciso fazer uma consulta em 3 tabelas, mas quando insiro a 3ª na consulta já duplica resultados:
      Tabela ticket
      id,  id_cliente
       
      Tabela clientes
      id, nome
       
      Tabela servicos_ticket
      id, id_ticket, valor_ticket
       
      Aqui OK
      SELECT ticket.*, clientes.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id Mas aqui duplica, porque um ticket pode ter vários serviços cadastrados.
      ticket.*, clientes.*, servico_ticket.* FROM ticket JOIN clientes ON ticket.id_cliente = clientes.id JOIN servico_ticket ON ticket.id = servico_ticket.id_ticket A listagem tem que ser apenas dos tickets cadastrados, tentei colocar DISTINCT tickets.* mas não adianta.
      o resultado deveria ser algo assim:
       
      12344 luiz 10.00
      12345 henrique 20.00
       
      mas se o ticket do luiz tiver 3 serviços cadastrados
       
      12344 luiz 10.00
      12344 luiz 10.00
      12344 luiz 10.00
      12345 henrique 20.00
       
      e deveria ser apenas 1, aí eu faria a soma dos valores
       
      12344 luiz 30.00
       
      Como elimino essa duplicação?
      Deu para entender?
      Obrigado.
    • Por PeeWee
      Opaa, o problema é o seguinte: preciso fazer uma busca no BD com esse código:
       
      $buscar = $pdo->prepare("SELECT * FROM `produtos` WHERE `titulo` LIKE '%$textoBusca%'");
              $buscar->execute();
              $retorno = array();
              $retorno['dados'] = '';
              $retorno['qtd'] = $buscar->rowCount();
              if($retorno['qtd'] >= 0){
                  while($conteudo = $buscar->fetchObject()){
                      $retorno['dados'] .= '<a href="#" id="'.$conteudo->id.':'.$conteudo->valor.'">'.utf8_encode($conteudo->titulo).'</a>';
                  }
              }
       
      O problema é que os resultados estão vindo duplicados (no BD só há 3 registros)
       
      Não tenho idéia do que fazer, se alguem puder ajudar agradeço desde já. 
       
    • Por cleimarlemes
      boa tarde.. poderia me ajudar estou com um problema meu Join esta trazendo dados duplicados . "SELECT *,date_format(`horasaida`,'%d-%m-%y às %Hh%i') FROM tb_entrada INNER JOIN tb_saida ON tb_entrada.nome = tb_saida.nome"; "SELECT *,date_format(`horasaida`,'%d-%m-%y às %Hh%i') FROM tb_entrada INNER JOIN tb_saida ON tb_entrada.nome = tb_saida.nome";  
      tenho 2 tabelas uma de entrada e uma de saida.. nao sei fazer somente em uma tabela nao consegui.. do jeito q ta ta funcionando mas no relatorio ae com o join se uma pessoa entrar e sair mais de 2 vezes no dia.. ele ta retornando os horarios q ele saiu a primeira vez , a segunda vez normal ae na terceira vez ele ja traz os resultados novamente .. nao sei onde ta errado ou que devo fazer pra nao duplicar mostrar somente os dados corretos.   -- -- Estrutura da tabela `tb_entrada` -- CREATE TABLE IF NOT EXISTS `tb_entrada` ( `id` int(5) NOT NULL AUTO_INCREMENT, `matricula` int(20) NOT NULL, `tipo` varchar(30) CHARACTER SET latin1 NOT NULL, `situacao` varchar(5) COLLATE utf8_unicode_ci NOT NULL, `nome` varchar(50) CHARACTER SET latin1 NOT NULL, `identidade` varchar(20) CHARACTER SET latin1 NOT NULL, `placa` varchar(10) CHARACTER SET latin1 NOT NULL, `veiculo` varchar(50) CHARACTER SET latin1 NOT NULL, `cidade` varchar(50) CHARACTER SET latin1 NOT NULL, `uf` varchar(2) CHARACTER SET latin1 NOT NULL, `empresa` varchar(50) CHARACTER SET latin1 NOT NULL, `dataentrada` varchar(15) COLLATE utf8_unicode_ci NOT NULL, `horaentrada` varchar(20) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ; -- -- Estrutura da tabela `tb_saida` -- CREATE TABLE IF NOT EXISTS `tb_saida` ( `id` int(5) NOT NULL AUTO_INCREMENT, `nome` varchar(50) CHARACTER SET latin1 NOT NULL, `horasaida` varchar(10) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ; meu Join e pro relatorio de entrada e saida,,, ele pega os dados de quem entrou na tabela entrada, data, e hora que entrou e pega a hora que ele saiu na tabela saida..
      o pro que se a pessoa entrar mais de 3 vezes no dia o relatorio traz ele umas 6 vezes tipo as 3 que entrou e repete elas de novo..
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.