Jump to content
cleimarlemes

Duplicando resultados com Join no relatorio

Recommended Posts

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..

 

Share this post


Link to post
Share on other sites

O que você quer não faz sentido. Pra quê você quer relacionar entrada e saída ? Faça um select para entradas e um para saídas. Não é necessário relacionamento aí.

Share this post


Link to post
Share on other sites
Agora, Alaerte Gabriel disse:

O que você quer não faz sentido. Pra quê você quer relacionar entrada e saída ? Faça um select para entradas e um para saídas. Não é necessário relacionamento aí.

seguinte, nao sei se entendeu.. eu nao sei fazer tudo rodar em uma so tabela,, dae criei 2 , a primeira qndo a pessoa entra ele cadastra na tabela de entrada os dados dele a data e hora que entrou.. ae ja a 2 tabela qndo ele sair vai pegar o nome de quem tinha entrado (nao sei se assim fica melhor) e registra a outra tabela a matricula, o nome e a hora que saiu.. dae esse join e pro relatorio de quem entrou e saiu pra pegar os dados da 1 tabela e depois juntar somente a hora de saida de cada pessoa.. nossa ficou complicado isso.. ja estou quebrando a cabeça faz dias.. ta funcionando mas se a mesma pessoa entrar por mais de 2 vezes no dia ele pega os dados da 1 a 2 a 3 e duplica tudo..  aff. teria uma maneira de fazer isso somente com uma tabela ? e como seria.

Share this post


Link to post
Share on other sites

É o que eu te disse. Isso foge do conceito de relacionamento de tabela. O que você está fazendo é "embolar" o meio de campo.

 

Se você já registro o nome na entrada e saída, não é necessário relacionamento, basta fazer um select normal para cada caso, não há nada de complicado nisso.

Share this post


Link to post
Share on other sites

ta entao deixa ver se entendi a logica ae.. kkkkk

 

meu relatorio de entrada e saida..

 

matricula | nome | identidade | placa | veiculo | tipo de pessoa | Empresa | data entrada | hora de entrada |  -> tabela 1 tb_entrada + o campo hora de saida | -> tabela 2 tb_saida..

o 1 select traria os dados da tabela 1 correto ?

o 2 select traria os dados da tabela 2 ..  e como o select da tabela 2 vai saber quem saiu da tabela 1 ?  isso q ta me matando a sem falar que nao pode duplicar.. se a pessoa entrar mais de 1 vez por dia teria que ir ficando um abaixo do outro.. .. olha meu relatorio funcionando.. www.polotextilinhumas.esy.es    se pedir login: cleimar@hotmail.com senha: 123  testa pra tu ver.. se o script ficar 100% do jeito que quero vou disponibilizar pra todos.

Share this post


Link to post
Share on other sites

Leia um pouco sobre MODELAGEM DE DADOS e NORMALIZAÇÃO.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By srs1999_
      Tópico
       
      Site em Código
      Sobre desenvolver sites sem o wordpress que ja tá tudo ali feito que seja um site dinâmico ou seja com banco de dados , APIs de pagamento, Painel para o usuário ,  além de todas  as funções que tem no wordpress e você teria propriedade pra explicar sobre detalhes mais técnicos da produção onde no wordpress só quem entende de progrqmação explicaria algum detalhe técnico 
      Então usando basicamente : 
      FRONT END 
      HTML 
       CSS 
      JAVASCRIPT 
      ALGUMA DE BACKEND COMO PHP E BANCO DE DADOS
      Pode se criar sites/sistemas tão bons ou melhores que no wordpress
       
      Fato : o proprio wordpress é feito em php e ate o proprio facebook tbm em php
      Fato 2 :  cerca de 70% dos sites são feitos em Wordpress
       
      Acho esse lance de procurar o caminho mais fácil limita muito a pessoa por exemplo é facil editar imagens no paint bem intuitivo , agora para editar no photoshop com muitas outras possibilidades  acaba sendo importante ir explorando essa elaboração mais difícil  com um mesmo objetivo. No caso do exemplo ( editar imagens )  
       
      Reflexão:
      Vale a pena se dedicar a trabalhar com a ferramenta Wordpress apenas por ser um meio rápido de ganhar dinheiro ?
      Ou trabalhar sem wordpress  usando tudo que exigido pra criar coisas originais mais que não seria tão rápido a produção. Mas creio que além dos sites feitos também geraria a possibildade de vender o sistema web criado para o cliente personalizar .
       
      Você Desenvolveria de que forma :
       Wordpress apenas ?
       
      Conhecer programação pra trabalhar 
      com  Wordpress ?
       
      Produzir tudo só com programação totalmente dinâmico sem  Wordpress?
    • By Duilio Gomes Pereira
      Tenho um banco de dados com mais de 21 mil usuários do wordpress. Como faço para deletar os usuário no  Phpmyadmin e deixar apenas 2 usuários?
       
      Pois só preciso de 2 usuários neste site.
       
      Obrigado!
    • By Duilio Gomes Pereira
      Olá!
      Tenho um bando de dados com mais de 21 mil usuários do wordpress. Como faço para deletar no Phpmyadmin e deixar apenas 2 usuários?
      Obrigado!
    • By Junior SAIZO
      Estou com uma duvida na qual não obtive solução. Tenho um objeto Array values e um array status, onde eu quero relacionar os índices do objeto Array values aos indices do array status. De modo que eu possa escrever um teste lógico onde: Se o indice 0 do objeto Array values for diferente de null (ou seja, contém valor), então o indice 0 do array status receberá o valor '1'.
      OU 
      Se o indice 1 do objeto Array values for diferente de null (ou seja, contém valor), então o indice 1 do array status receberá o valor 1.
       
      Por exemplo, antes do teste lógico:
      values:[ 0 => [ 0 => "1,02" 1 => "2,032" 2 => "32,01" 3 => "0,021" ] 1 => [ 0 => "null" 1 => "null" 2 => "8,258" 3 => "1,021" ] 2 => [ 0 => "4,021" 1 => "6,258" 2 => "null" 3 => "10" ] ] status:[ 0 => "0" 1 => "0" 2 => "0" ] Após o teste lógico:
       
      status:[   0 => "1"   1 => "0"   2 => "0" ] Neste exemplo só o indice 0 do array status recebeu o valor "1", porque APENAS o array 0 do objeto Array values tinha valores diferente de null.
       
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
       
      O array status sempre terá o mesmo número de índices que o objeto Array values terá de arrays (Se array status tem 5 indices (0, 1, 2, 3, 4), o objeto Array value terá 5 arrays (0, 1, 2, 3, 4)). Além disso o array status sempre iniciará com os valores do indice igual a '0'. E se os valores dos indices do objeto values forem TODOS diferentes de null, cada indice do array status receberá o valor '1'.
       
      Exemplificando:

       
      <?php status:[   0 => "1",   1 => "1",   2 => "1", ] ?>  
       
      Em outro fórum obtive a seguinte resposta:
       
      <?php $aValues = [ 0 => [ 0 => "1,023" , 1 => "0,023" , 2 => "5,023" , 3 => "1" ], 1 => [ 0 => null , 1 => null , 2 => "5" , 3 => "1,87" ], 2 => [ 0 => "null" , 1 => null , 2 => null , 3 => null ] ]; $aStatus = [ 0 => 0 , 1 => 0 , 2 => 0 ]; foreach ($aValues as $chave => $values) { $status = 1; foreach ($values as $value) { // se tiver qquer valor null status recebe 0 if ($value == null) { $status = 0; break; } } $aStatus[$chave] = $status; } echo '<pre>'; print_r($aStatus); ?> Porém, quando eu executo o código NÂO é me retornado o array status com os indices com valores "0" ou "1", me retorna apenas uma nova chave FORA do array status com algum valor "0" ou "1". Tentei modificar o código ou tentar uma abordagem diferente, mas sem resultado. Vou inserir uma imagem para melhor compreensão do que o código me retorna.
       
       
      Espero ter sido claro na minha dúvida.  
      Desde já, agradeço.

    • By Giovanird
      Estou quebrando a cabeça para fazer uma consulta em 2 colunas da mesma tabela.
      Preciso retornar a NOTA1 e NOTA2 consultando ambas colunas e listar sem repetir as notas vinculadas com cada série.

      TABELA ALUNOS
      COD |    CODSERIE  |  DATACADASTRO  |  NOTA1  |  NOTA2  
      1       |    2                  |  01/08/2021           |  5            |  3
      2       |    1                  |  11/08/2021           |  3            |  5
      3       |    2                  |  12/08/2021           |  5            |  3
      4       |    3                  |  15/08/2021           |  3            |  1
      5       |    2                  |  15/08/2021           |  5            |  3
      6       |    3                  |  18/08/2021           |  4            |  5
      7       |   2                   |  22/08/2021           |  2            |  3
      8       |   1                   |  12/08/2021           |  1            |  3
      9       |   2                   |  25/08/2021           |  5            |  6

      RETORNAR:
      SERIE 1
      Nota: 3
      Nota: 5
      Nota: 1
       
      SERIE 2
      Nota: 5
      Nota: 3
      Nota: 2
      Nota: 6
       
      SERIE 3
      Nota: 3
      Nota: 1
      Nota: 4
      Nota: 5
       
      Aqui tenho um foreach de outra tabela que devolve o codigo das séries e as notas para consulta foreach($rsserie as list($varserie,$varnota1,$varnota2)){ SELECT nota1, nota2 FROM alunos WHERE codserie like '$varserie' and (nota1 = '$varnota1' or nota1 = '$varnota2' or nota2 = '$varnota1' or nota2 = '$varnota2') Group by nota1, nota2 }  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.