Ir para conteúdo
GustavoJacob15

Sql triplicando resultado

Recommended Posts

Quando eu executo esse fonte, trás o resultado triplicado

 

 

 

SELECT CN9_NUMERO  AS 'CONTRATO',
       CONVERT(DATE, SUBSTRING(CN9_DTINIC, 1, 4) + '-' + SUBSTRING(CN9_DTINIC, 5, 2) + '-' + SUBSTRING(CN9_DTINIC, 7, 2)) AS 'DT INICIO', 
       CONVERT(DATE, SUBSTRING(CN9_DTFIM, 1, 4) + '-' + SUBSTRING(CN9_DTFIM, 5, 2) + '-' + SUBSTRING(CN9_DTFIM, 7, 2)) AS 'DT FIM', 
       CN9_NUMERO  AS 'CENTRO DE CUSTO',
       CN9_ZZEMTI AS 'ART EMITIDA',
       CONVERT(DATE,CN9_ZZDTVA) AS 'VALIDADE DA ART',
       CN9_VLATU   AS 'VALOR CONTRATO',
       CNC_CLIENT AS 'CLIENTE',
       CNC_LOJACL AS 'LOJA CLIENTE',
       A1_NOME    AS 'NOME CLIENTE',
       CNE_PEDIDO AS 'PEDIDO',
       CNE_PERC   AS 'PERCENTUAL',
       C6_NOTA AS 'NOTA FISCAL',
       E1_NUM AS 'NUMERO',
       CNE_REVISA, 
       CONVERT(DATE,E1_BAIXA) AS 'DT BAIXA',
       CNF_VLPREV AS 'VALOR PREVISTO',
       CNF_PARCEL AS 'PARCELA',
       CONVERT(DATE,CNF_DTVENC) AS 'VENCIMENTO'
FROM CN9010 CN9
INNER JOIN CNC010 CNC ON CNC.CNC_NUMERO = CN9.CN9_NUMERO AND CNC.D_E_L_E_T_ =''
INNER JOIN SA1010 A1 ON CNC.CNC_CLIENT = A1.A1_COD AND CNC.CNC_LOJACL = A1.A1_LOJA AND A1.D_E_L_E_T_ =''
INNER JOIN CNF010 CNF ON CNF.CNF_CONTRA = CN9.CN9_NUMERO AND CN9.D_E_L_E_T_=''
INNER JOIN CNE010 CNE ON CNE.CNE_CONTRA = CNF.CNF_CONTRA AND CNE.D_E_L_E_T_=''
INNER JOIN SC6010 C6 ON C6.C6_NUM = CNE.CNE_PEDIDO AND C6.D_E_L_E_T_ =''
INNER JOIN SE1010 E1 ON E1.E1_NUM = C6.C6_NOTA AND E1.D_E_L_E_T_ ='' AND E1.E1_TIPO ='NF'
WHERE CN9.D_E_L_E_T_=''
AND CN9_NUMERO = '201000272'
AND CN9_REVISA = '002'
AND CN9.D_E_L_E_T_=''
AND CNF_CONTRA =  '201000272'
AND CNF_REVISA =  '002'
AND CNF.D_E_L_E_T_=''
AND CNE_CONTRA = '201000272'    
AND CNE_REVISA = '002'  
AND CNE.D_E_L_E_T_=''
AND E1_PREFIXO = 'SRV'
AND CNC_NUMERO = '201000272'
AND CNC_REVISA = '002'
  
GROUP BY CN9_NUMERO,CN9_REVISA,CN9_DTINIC,CN9_DTFIM,CN9_NUMERO,CN9_ZZEMTI,CN9_ZZDTVA,CN9_VLATU,CNC_CLIENT,CNC_LOJACL, A1_NOME, CNE_PEDIDO, CNE_PERC, C6_NOTA, E1_NUM, CNE_REVISA, E1_BAIXA, CNF_VLPREV, CNF_PARCEL, CNF_DTVENC

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 verifique se os joins estão com todos os campos , não teria de ter o xxx_FILIAL ?

2 alguns dos joins ainda que certos tem uma relação de 1:n o que vai gerar um produto cartesiano indevido , tente um DISTINCT ou GROUP BY

 

estas tabela são do TOTVS não conheço todas para validar os joins

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Jefferson andre
      Ola, estou criando um contador de acessos diario mas nao funciona, a tabela tem o campo data no formato date e o campo contador int(10)
       
      A ideia eh verificar a data e se nao existir incluir na tabela, se existir adicionar ao contador
       
      Parece que o erro esta no formato da data, nem manualmente consigo incluir na tabela via localhost ou na hospedagem da google
       
      Agradeço qualquer ajuda
       
      <?php // fazendo uma conexão com o banco de dados include("conexao.php"); // grava a data atual em uma variavel date_default_timezone_set('America/Sao_Paulo'); $date = date('d-m-Y'); //$sql = "SELECT codigo FROM contador"; $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); if (mysqli_num_rows($resultado)== true){ // registro ja existe } else { // resultado nao encontrado entao inserir $sql = "INSERT INTO contador_diario ('data', 'contador') VALUES ('$date', '1')"; if ($arquivo->query($sql) == TRUE) { echo "Data cadastrada com sucesso"; } else { echo "Erro: " . $sql . "<br>" . $arquivo->error; } } // refaz a pesquisa para registrar o contador $resultado = $arquivo->query("SELECT data,contador FROM contador_diario WHERE data = '$date'"); // igualar a array a uma variavel $linha=mysqli_fetch_array($resultado); $cod_2 = $linha["contador"]+1; // lista a variavel //echo "<font face='Arial'><span class='style14'>$cod_2</span></font>"; $sql = "UPDATE contador_diario SET contador=$cod_2"; if ($arquivo->query($sql) === TRUE) { // echo "Alteração efetuada com sucesso"; } else { // echo "Erro alterando o contador de visitas diario" . mysqli_error($arquivo); } // fecha a conexao mysqli_close($arquivo); ?>  
    • Por gersonab
      Tenho este sql que funciona normal:
      <?php $idtor = (int)$_GET['id_tor']; $dia = $_GET['dia']; $sql3 = "SELECT * FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE data = :dia AND id_torneio = :idtor ORDER BY cantosfim DESC, pontos DESC, cantos DESC"; $stmt = $pdo->prepare($sql3); $stmt->bindParam(':idtor', $idtor); $stmt->bindParam(':dia', $dia); $stmt->execute(); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> porém este outro não retorna nada, nem erro...
      <?php $idtor = (int)$_GET['id_tor']; $consul = "SELECT id_cantos, id_torneio, id_campeonato, SUM(cantosfim) AS cantfin, SUM(pontos) AS pontfin FROM cantos INNER JOIN campeonato ON id_camp = id_campeonato INNER JOIN torneio ON id_tor = id_torneio WHERE id_tor = :idtor ORDER BY pontfin DESC, cantfin DESC"; $stmt = $pdo->prepare($consul); $stmt->bindValue(':idtor', $idtor); $stmt->execute(); while ($lin = $stmt->fetch(PDO::FETCH_ASSOC)) { ?> não consigo encontrar o erro.
    • Por Alex Dias
      <?php //CONECTA COM O BANCO DE DADOS require_once("adm/conecta.php"); //SQL $sql = "SELECT DISTINCT tb_comentarios.ID_COMENTARIOS, tb_comentarios.DATA_COMENTARIOS, tb_comentarios.NOME_COMENTARIOS, tb_comentarios.COMENTARIOS, tb_respostas.ID_RESPOSTAS, tb_respostas.DATA_RESPOSTAS, tb_respostas.NOME_RESPOSTAS, tb_respostas.RESPOSTAS FROM tb_comentarios, tb_respostas WHERE tb_comentarios.ID_COMENTARIOS = tb_respostas.ID_COMENTARIOS ORDER BY DATA_COMENTARIOS DESC"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); // CHAMA OS DADOS DA TABELA while ($linha=mysql_fetch_array($resultado)) { $id_comentarios = $linha["ID_COMENTARIOS"]; $data_comentarios = $linha["DATA_COMENTARIOS"]; $nome_comentarios = $linha["NOME_COMENTARIOS"]; $email_comentarios = $linha["EMAIL_COMENTARIOS"]; $comentarios = $linha["COMENTARIOS"]; $status = $linha["STATUS"]; $id_artigo = $linha["ID_ARTIGO"]; $id_respostas = $linha["ID_RESPOSTAS"]; $data_respostas = $linha["DATA_RESPOSTAS"]; $nome_respostas = $linha["NOME_RESPOSTAS"]; $email_respostas = $linha["EMAIL_RESPOSTAS"]; $respostas = $linha["RESPOSTAS"]; $status = $linha["STATUS"]; $id_artigo = $linha["ID_ARTIGO"]; $id_comentarios = $linha["ID_COMENTARIOS"]; $data_portugues1= implode("/", array_reverse(explode("-", "$data_comentarios"))); $data_portugues2= implode("/", array_reverse(explode("-", "$data_respostas"))); echo" <table width='1200' align='center' border='0' cellspacing='0' cellpadding='0'> <tr> <td width='100' valign='top'><img src='images/usuario.jpg'></td> <td width='900' valign='top'><p align='left'><font size='3'><strong>$nome_comentarios</strong> dia $data_portugues1</font></p><br><p align='justify'><font size='3'>$comentarios</font><p></td> <td width='200' align='center' valign='middle'><a href='#'><img src='images/responder.jpg' bordeer='0'></a></td> </tr> </table> "; echo"<br><br> <table width='1200' align='center' border='0' cellspacing='0' cellpadding='0'> <tr> <td width='100' valign='top'>&nbsp;</td> <td width='100' valign='top'><img src='images/usuario2.jpg'></td> <td width='800' valign='top'><p align='left'><font size='3'><strong>$nome_respostas</strong> dia $data_portugues2</font></p><br><p align='justify'><font size='3'>$respostas</font><p></td> <td width='200' align='center' valign='middle'><a href='#'><img src='images/responder.jpg' bordeer='0'></a></td> </tr> </table> <br><br><br><br>"; }//FECHA FOR ?> Boa tarde amigos, estou batendo cabeça aqui com meu Blog, meu Blog tem duas tabelas MySQL uma chamada tb_comentarios para armazenasr os comentários dos artigos postados, a outra tabela é chamada de tb_respostas para armazenar as respostas desses comentários dos usuários. Está tudo ok imprimindo os comentários e respostas na tela bem legal, o único problema é que os comentários estão duplicando, as respostas estão ok, mas os comentários estão duplicando.
       
      O Correto seria o comentário ficar lá e as respostas todas em baixo desse comentário, a questão é que cada resposta dada acaba repetido o comentário, então fica sempre o comentário e a resposta um abaixo do outro, e se tiver três respostas desse comentário, a dupla comentário x resposta se repete por três vezes sendo que o ideal seria só um comentário e as três respostas em baixo, e não consigo determinar que o comentário não se repita, ja usei DISTINCT mas não resolve.

      Segue abaixo o código e anexo o PRINT da tela para vocês entenderem o que tá acontecendo.


       

    • Por clickanapolis
      Bom dia pessoal, preciso criar uma query onde eu vou pegar a lista de fornecedores e contas a pagar mais ou menos assim:
       
      select * from clientes a, cp b where a.id_cliente = b.id_cliente o problema é que o cliente quer que order by seja por quem ele mais deve para o que menos deve.
       
      O problema que temos 5 status de pagamento no contas a pagar.
       
      E o meu sum deve fazer a soma para ordenação apenas em 3, como eu faria para minha query ordenar fazendo a soma nos status 1, 2 e 3?
    • Por stewartcintra@
      Tenho um sistema de contas em php mysql, preciso exibir todas as contas do mes agrupadas por categoria e o campo valorR$ para saber o total em reais de cada categoria.
      Não estou conseguindo, como posso fazer isso?
×

Informação importante

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