none
Soma muitas tabelas Cross Join, Mysql c#. RRS feed

  • Pergunta

  • comandoSQL.CommandText = "SELECT *, (Sum(Pago) + (Sum(Preco_) - Sum(Preco) - Sum(Salario)) As Total FROM caixa_cadastrado CROSS JOIN contas_receber CROSS JOIN contas_pagar CROSS JOIN funcionarios_salarios";

    O From table e os cross join estão ordenados conforme a ordem das colunas eu gostaria de entender o porque deste código apresentar um erro, antes o mesmo código oredenado diferente as colunas e os cross join mostrava a soma porém com um resultado diferente da mesma soma feita na calculadora. 

    segunda-feira, 16 de outubro de 2017 23:04

Respostas

  • As tabelas tem relação umas com as outras? Porque se elas são independentes, acredito que o melhor seja fazer queries separadas e no final realizar o cálculo que deseja.

    Se seu banco for SQL Server sugiro postar uma dúvida especificamente no fórum SQL Server - Desenvolvimento.

    Ex:

    SELECT (SomaCaixa - SomaSalario) AS Total
    
    FROM
    (SELECT SUM(Pago) AS SomaCaixa 
    FROM Caixa_Cadastrado) AS QryCaixa,
    (SELECT SUM(Salario) AS SomaSalario
    FROM Funcionarios_Salarios) AS QryFunc
    
    


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 19 de outubro de 2017 00:08

Todas as Respostas

  • Neste caso não sei se é apropriado eu precisaria criar relacionamento chave estrangeira e primária sem necessidade só para relacionar as colunas com o Inner Join para fazer uma soma entre elas? É que eu li em algum lugar que o CROSS JOIN não precisa de utilizar o "on".
    terça-feira, 17 de outubro de 2017 17:53
  • Boa tarde, Rafael Augusto Ferreira de Oliveira.

    Qual o erro que está apresentando? Explique melhor o que precisa, por favor.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 17 de outubro de 2017 18:51
    Moderador
  • Bom eu prosseguindo com o código parou de mandar mensagem de erro porém o cálculo da soma obtido é incorreto comparado com o feito na calculadora eu já testei outros select com o Inner Join e o cálculo ficou correto. Qual é a maneira de fazer uma soma entre muitas tabelas sem precisar fazer o relacionamento chave estrangeira e primária que neste caso específico não teria motivo para criar chave estrangeira neste caso como resolver? Eu gostaria de fazer uma soma entre tabelas sem a cláusula "On" tabela1.coluna = tabela2.coluna; mas o problema do código abaixo que o resultado da soma é incorreto. 


    comandoSQL.CommandText = "SELECT *, Sum(Pago + Preco_ - Preco - Salario) As Total FROM caixa_cadastrado Cross Join contas_receber Cross Join contas_pagar Cross Join funcionarios_salarios";

    terça-feira, 17 de outubro de 2017 19:17
  • Quais os campos de cada tabela? Quais as colunas do JOIN? Dê mais detalhes.

    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    terça-feira, 17 de outubro de 2017 22:41
  • Caixa_Cadastrado - Tabela

    Codigo

    Descricao

    Codigo_Barras

    Quantidade

    Preco__

    Desconto

    Pago

    Troco

    Data_de_Hoje

    Contas_Pagar - Tabela

    Codigo

    Tipo_Conta

    Codigo_Conta

    Preco

    Data_de_Hoje

    Contas_Receber - Tabela

    Codigo

    Tipo_Conta

    Codigo_Conta

    Preco_

    Data_de_Hoje

    Funcionarios_Salarios - Tabela

    Codigo

    Nome

    Salario

    Extra

    Dividas

    Sobre_Funcionarios

    Data_de_Hoje

    A dúvida é se posso usar o Cross Join sem "On" chave estrangeira e primária. Neste código a soma está dando incorreto em relação aos valores salvos.

    terça-feira, 17 de outubro de 2017 23:56
  • As tabelas tem relação umas com as outras? Porque se elas são independentes, acredito que o melhor seja fazer queries separadas e no final realizar o cálculo que deseja.

    Se seu banco for SQL Server sugiro postar uma dúvida especificamente no fórum SQL Server - Desenvolvimento.

    Ex:

    SELECT (SomaCaixa - SomaSalario) AS Total
    
    FROM
    (SELECT SUM(Pago) AS SomaCaixa 
    FROM Caixa_Cadastrado) AS QryCaixa,
    (SELECT SUM(Salario) AS SomaSalario
    FROM Funcionarios_Salarios) AS QryFunc
    
    


    Juliano Nunes - http://linkedin.com/in/julianonunes

    Lembre-se de clicar em "Votar como útil" e "Marcar como Resposta" caso tenha respondido sua dúvida.

    Remember to "Vote as Helpful" and "Mark as Answer" if your question has been answered.

    quinta-feira, 19 de outubro de 2017 00:08
  • Boa tarde,

    Se não houver retorno na thread, a mesma será encerrada.

    Atenciosamente,

    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 20 de outubro de 2017 19:00
    Moderador
  • Boa tarde,

    Por falta de retorno essa thread está encerrada.

    Se necessário, favor abrir uma nova thread.

    Atenciosamente,


    Filipe B de Castro

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 23 de outubro de 2017 17:23
    Moderador