Jump to content
jeanzinsousa

problemas com subquery multiplos resultados

Recommended Posts

Salve, Galera estou com uma dúvida estudando banco de dados e programação.

 

escrevi a seguinte query:

 

SELECT data_pg as diaria, SUM(valor_pg) as valor_diario, SUM(valor_despesa) as valor_despesa, (SELECT SUM(valor_pg) as dinheiro FROM pagamento WHERE tipo = 5 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) as total_dinheiro, (SELECTSUM(valor_pg) as debito FROM pagamento WHERE tipo = 25 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) as total_debito, (SELECT SUM(valor_pg) as credito FROM pagamento WHERE tipo = 15 AND MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019) astotal_credito FROM pagamento WHERE MONTH(data_pg) = 06 AND YEAR(data_pg) = 2019 GROUP BY diaria ORDER BY `diaria`

 

resultado:

diaria Descendente 1 valor_diario valor_despesa total_dinheiro total_debito total_credito  
2019-06-10 818.70 0 288.40 586.95 113.30
2019-06-11 169.95 0 288.40 586.95

113.30

 

 

 

 

Como podem ver meu objetivo e separar por dia o resultado dos valores divididos por tipo de pagamento.

porém o mesmo mostra a soma total nas subquery.

quando coloco o group by order by dentro das subquerys apresenta a seguinte mensagem de erro: #1242 - Subquery returns more than 1 row 

 

 

como resolver?

Share this post


Link to post
Share on other sites

Indente a query e coloque numactag code <> , este erro que relatou ocorre pois subqueries de coluna só podem retornar UM valor.

Share this post


Link to post
Share on other sites
19 horas atrás, Motta disse:

Indente a query e coloque numactag code <> , este erro que relatou ocorre pois subqueries de coluna só podem retornar UM valor.

 

Motta,

Obrigado pelo retorno.

Mas não entendi sua colocação.

eu devo colocar <> em qual parte da estrutura? entre as subquery no lugar de igual a.

 

sou iniciante na parte de sql e estou estudando.

Share this post


Link to post
Share on other sites

1º Arrume o sql em uma estrutura hierárquica , fica mais fácil entender , vide.

 

2º na parte de cima do editor tem um botão <> ele serve para formatar o texto como código , selecione o texto e clique no botão.

 

3º O que relatou ocorre pois subqueries de coluna só podem retornar UM valor , analise o retorno possível de seuas queries.

 

 

Share this post


Link to post
Share on other sites
Em 12/06/2019 at 15:07, Motta disse:

1º Arrume o sql em uma estrutura hierárquica , fica mais fácil entender , vide.

 

2º na parte de cima do editor tem um botão <> ele serve para formatar o texto como código , selecione o texto e clique no botão.

 

3º O que relatou ocorre pois subqueries de coluna só podem retornar UM valor , analise o retorno possível de seuas queries.

 

 

 

Entendi.

Obrigado Motta. pelo retorno

 

vou procurar outra  forma.

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 mm_edilson
      Boa tarde, amigos. Poderiam me dar uma ajuda? Não estou conseguindo gravar no banco de dados. O site sempre retorna "não foi possível cadastrar esse usuário".
       
      A estrutura da minha tabela "usuários" é ID, nome, email, usuario, senha, permissao, status. O meu form é:
       
      <!DOCTYPE html> <html> <head> <title> Cadastro de Pessoas</title> <meta charset="utf-8" /> <style type="text/css"> * { margin: 0; padding: 0; vertical-align: baseline; } body { width: 100%; background-color: black; } .cabecalho{ width: center; height: 15vh; background: black; display: flex; flex-direction: row; justify-content: center; align-items: center; font-family: Arial; font-size: 15pt; font-weight: bold; color: white; } .corpo{width: 100vw; height: 100vh; background: #6C7A89; display: flex; flex-direction: row; justify-content: center; align-items: center; font-family: Arial; font-size: 15pt; font-weight: bold; } .labels{ display: block; left: 0; width: auto; font-family: Arial; font-size: 15pt; font-weight: bold; } .campos{ display: block; left: 0; width: auto; font-family: Arial; font-size: 15pt; font-weight: bold; } p { margin: 5px; font-family: Arial; font-size: 15pt; font-weight: bold; color: white; text-align: right; } </style> </head> <body> <div class="cabecalho"><center><H3>IGREJA BATISTA NOVA ALIANÇA - CADASTRO DE USUÁRIO<BR>Preencha todos os campos e clique em "Cadastrar"</H3></center></div> <div class="corpo"> <div class="labels"> <p>Nome completo:<br><br>Endereço de Email:<br><br>Nome de Usuário:<br><br>Senha:<br><br>Confirme a Senha:<br><br><br></p> </div> <div class="campos"> <p><form method="POST" action="cadastro.php"> <input type="text" size="41px" name="nome"> <br><br> <input type="text" size="41px" name="email"><br><br> <input type="text" size="21px" name="usuario"><br><br> <input type="password" size="21px" name="senha"><br><br> <input type="password" size="21px" name="confirma_senha"><br><br> <input type="reset" value="Limpar Formulário"> <input type="submit" value="Cadastrar"> </form></p> </div></div> </body> </html>  
      e o meu cadastro.php é
       
      <?php $nome = $_POST['nome']; $email = $_POST['email']; $usuario = $_POST['usuario']; $senha = MD5($_POST['senha']); $permissao = 1; $status = 1; $connect = mysqli_connect('localhost','opbbabac_dados_membros','*************'); $db = mysqli_select_db('opbbabac_dados_membros'); $query_select = "SELECT usuarios FROM opbbabac_dados_membros WHERE usuario = '$usuario'"; $select = mysqli_query($query_select,$connect); $array = mysqli_fetch_array($select); $logarray = $array['usuario']; if($usuario == "" || $usuario == null){ echo"<script language='javascript' type='text/javascript'>alert('O campo usuário deve ser preenchido');window.location.href='cadastro.html';</script>"; }else{ if($logarray == $usuario){ echo"<script language='javascript' type='text/javascript'>alert('Esse usuário já existe');window.location.href='cadastro.html';</script>"; die(); }else{ $query = "INSERT INTO usuarios (nome,email,usuario,senha,permissao,status) VALUES ('$nome','$email','$usuario','$senha','$permissao','$status')"; $insert = mysqli_query($query,$connect); if($insert){ echo"<script language='javascript' type='text/javascript'>alert('Usuário cadastrado com sucesso!');window.location.href='login.html'</script>"; }else{ echo"<script language='javascript' type='text/javascript'>alert('Não foi possível cadastrar esse usuário');window.location.href='cadastro.html'</script>"; } } } ?>  
      Alguém consegue visualizar onde está o erro? Obrigado, e abraços a todos.
       
       
    • By Alberto Nascimento
      Tenho um formulário de Upload e preciso salvar o "valor" gerado e exibido através do "echo" :
       
      echo "<img src=\"" . $destino . "\" />";  
      Como faço para salvar no campo "novonome" da tabela?
    • By rogerblower
      o Google me avisou de dois erros no meu site;
       
      Clickable elements too close together
      Text too small to read
       
      Na verificação constatei que o erro é;
       
      Fatal error:  Call to undefined function db_connect() in
       
      O php não me mostra esse erro mesmo habilitando os erros no php ini os arquivos de conexão que estou usando são;
       
      ini.php
      <?php define('DB_HOST', 'localhost'); define('DB_USER', 'user'); define('DB_PASS', 'senha'); define('DB_NAME', 'banco'); ini_set('display_errors', true); error_reporting(E_ALL); require_once 'functions.php'; functions.php
       
      <?php function db_connect() { $pdo = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME . ';charset=utf8', DB_USER, DB_PASS); return $pdo; } function make_hash($str) { return sha1(md5($str)); } function isLoggedIn() { if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in']!== true) { return false; } return true; } O erro esta nesta linha
      <?php $pdo = db_connect(); $sql = $pdo->prepare("SELECT * FROM servicos "); $sql->execute(); while($row=$sql->fetch(PDO::FETCH_ASSOC)){ echo'<a href="servicos.php?id='.$row['id'].'">'.$row['servico'].'</a>'; } Incluo a conexão com banco na header.php e nas demais páginas não aparece o erro
      realmente não sei o que pode estar acontecendo.
      se alguém pode me ajudar?
       
      Obrigado
       
    • By R4gn3ls0n
      Ao hospedar um arquivo no phpMyAdmin apareceu esse erro, como posso resolver?
      Linhas:
      -- version 4.3.8
      -- http://www.phpmyadmin.net
      --
      -- Host: localhost:3306
      -- Tempo de geração: 28/02/2018 às 19:49
      -- Versão do servidor: 5.6.32-78.1
      -- Versão do PHP: 5.6.30
       
      ______________________________
       
      SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
      SET time_zone = "+00:00";
       

    • By helkton
      galera minha duvida é a seguinte....
      faço a seguinte busca e monto um pdf pra um certificado, e neste certificado preciso coletar todas as materias referente ao curso do mesmo
      $sqlConteudoCurso = "SELECT * FROM conteudo_curso where idCursoConteudo = '$idCurso' order by idConteudo ASC; $conectaConteudoCurso = $conecta->query($sqlConteudoCurso); //conteudoCurso $pdf->SetFont('Arial', '', 11); // Tipo de fonte e tamanhos $pdf->SetTextColor(10,15,35); $pdf->SetXY(10,75); //Parte chata onde tem que ficar ajustando a posição X e Y while($resultConteudoCurso = $conectaConteudoCurso->fetch_object()){ $conteudoCurso = $resultConteudoCurso->nomeConteudo; $pdf->MultiCell(75, 5, $conteudoCurso,'0', 'L', 0);// Tamanho width e height e posição } ok esta é a consulta que realizo no banco de dados ele me retorna a materia referente ao curso certinho, digamos que o curso tenha umas 20 matérias, ele vai imprimir certinho conforme as configurações de espaçamentos...
      AGORA O B.O é seguinte quando o curso acontece de ter tipo umas umas 40 MATÉRIAS ele acaba gerando outra página de pdf
      o que eu queria era que não gerasse outra pagina e sim partisse para o lado direito, pois é um certificado
      TIPO ASSIM....
      MATERIA 1 DO CURSO 1 MATERIA 11 DO CURSO 1 MATERIA 2 DO CURSO 1 MATERIA 12 DO CURSO 1 MATERIA 3 DO CURSO 1 MATERIA 13 DO CURSO 1 MATERIA 4 DO CURSO 1 MATERIA 14 DO CURSO 1 MATERIA 5 DO CURSO 1 MATERIA 15 DO CURSO 1 MATERIA 6 DO CURSO 1 MATERIA 16 DO CURSO 1 MATERIA 7 DO CURSO 1 MATERIA 17 DO CURSO 1 MATERIA 8 DO CURSO 1 MATERIA 18 DO CURSO 1 MATERIA 9 DO CURSO 1 MATERIA 19 DO CURSO 1 MATERIA 10 DO CURSO 1 MATERIA 20 DO CURSO 1  
×

Important Information

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