Ir para conteúdo
    • João Batista Neto

      iMasters InterCon 2017   10-10-2017

      Ainda dá tempo de se inscrever no iMasters InterCon 2017, o maior evento dev do Brasil!  
halfar

resultado instrucao sql

Recommended Posts

A instrucao sql abaixo conta quantos registros contém  bananas e abacaxis:

 

Citar

$sql = "SELECT
count(produtos) as banana, ( SELECT count(produtos) as abacaxi FROM frutas  where produtos='abacaxi')  FROM frutas where produtos = 'banana'";

 

Este modo de montar a  instrução vi na net e funciona normal,  porém tem os seguintes detalhes:

 

Ao executar esta instrucao sql diretamente no phpmyadmin no PROVEDOR REMOTO, retorna corretamente os valores,  no entanto, na DESCRIÇÃO do campo abacaxi, veja como ficou na imagem em anexo:

 

bem, a imagem não subiu, apareceu um erro no momento do upload, vou tentar reproduzir a imagem aqui via texto mesmo:


 

Citar

 

banana ( SELECT count(produtos) as abacaxi FROM frutas where produtos='abacaxi')

2                 1

 


 

 

Veja que a descrição do campo banana retorna o valor 2 corretamente

 

e

 

no campo abacaxi, onde deveria aparecer apenas a palavra abacaxi mostra ao invés disto a descricao da instrucao sql referente ao abacaxi. Todavia o valor retornado para o campo abacaxi está correto.

 

 

Agora, quando executo o script ao recuperar os valores, retorna somente o valor da banana. O abacaxi retorna nulos.

 

A instrucao sql do script fiz assim:


 

Citar

 

$sql = "SELECT
count(produtos) as banana, ( SELECT count(produtos) as abacaxi FROM frutas  where produtos='abacaxi')  FROM frutas where produtos = 'banana'";
$exec = $conn->query($sql);
$rows = $exec->fetchAll( PDO::FETCH_ASSOC );

 

$banana = $rows[0]["banana"];
$abacaxi = $rows[0]["abacaxi"];

 

echo "valor de banana: "  . $banana;
echo "valor de abacaxi: " . $abacaxi;
 


 

 

 

Alguém saberia como resolver este abacaxi??, pelo menos fazer aparecer o resultado no script?? No  phpMyadmin do servidor remoto nem precisa esquentar a cabeça. 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimenta assim:

 

SELECT COUNT(produtos) AS 'banana', (SELECT COUNT(produtos) FROM frutas WHERE produtos = 'abacaxi') AS 'abacaxi' FROM frutas WHERE produtos = 'banana';

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

funcionou,  corrigiu aquele resultado esquisito no provedor, e também está aparecendo agora o resultado correto do abacaxi...

 

só não entendi a lógica disso,  colocar o "AS ABACAXI" fora do parenteses do select

Compartilhar este post


Link para o post
Compartilhar em outros sites

A lógica é a seguinte:

 

Ao utilizares uma subquery, o resultado vai ser interpretado como um campo normal da tabela, daí resulta que o alias tem de ser definido fora dos parentesis da subquery para ser "visto" pela consulta principal.

 

SELECT COUNT(produtos) AS 'banana', (SELECT COUNT(produtos) AS 'abacaxi' FROM frutas WHERE produtos = 'abacaxi') FROM frutas WHERE produtos = 'banana';

No caso acima, 'abacaxi' não existe no âmbito da consulta principal.

 

SELECT COUNT(produtos) AS 'banana', (SELECT COUNT(produtos) FROM frutas WHERE produtos = 'abacaxi') AS 'abacaxi' FROM frutas WHERE produtos = 'banana';

Neste caso sim. Vê o segundo SELECT como se fosse um campo de uma tabela para o qual estás a definir um alias. Mais informações sobre subqueries neste artigo.

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


  • Próximos Eventos

  • Conteúdo Similar

    • Por Artur Mendonça
      Olá amigos,
      criei uma página para fazer a inscrição de "atletas" (leia-se crianças) em provas desportivas.
      A página criada é a que está em anexo.
       
      Queria que ao abrir a página a listagem com o nome dos atletas ficasse em branco e só aparecesse os nomes depois de selecionar a prova em que se inscrevem.
       
      Na coluna "inscrito" queria que aparecesse "Sim" ou "Não" no caso do atleta já estar inscrito ou não.
      Depois, ao clicar no botão "inscrever" a coluna "inscrito" seria atualizada para "Sim" e ao clicar em "Anular" seria atualizado para "Não".
       
      Tenho as tabelas "tblatletas2" (com o nome de todos os atletas do grupo), "tblprova" (com todas as provas existentes) e "tblinscprova" (que será preenchida com os dados dos atletas inscritos; nesta tabela tem os campos "Prova" e "Atleta").
       
      Neste momento tenho o seguinte código, mas que não funciona como pretendo.
      <?php include_once("administrativo.php"); $resulta = mysqli_query($conectar,"SELECT * FROM tblatleta2 ORDER BY Nome"); $linhas = mysqli_num_rows($resulta); $inscrito = mysqli_query($conectar, "SELECT * FROM tblinscprova WHERE Prova = 'prova' AND Atleta='IdAtleta'"); ?> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="adm/imagens/teste.ico"> </head> <div class="container theme-showcase" role="main"> <!-- Lista de utilizadores --> <div class="page-header"> <br /> <h1>Inscrever Atletas em Provas</h1> </div> <div class="form-group"> <label for="inputEmail3" class="col-sm-2 control-label">Prova em que o atleta se inscreve </label> <div class="col-sm-10"> <select class="form-control" name="prova" required> <option></option> <?php $resultado=mysqli_query($conectar, "SELECT * FROM tblprova ORDER BY DataProva"); WHILE($dados = mysqli_fetch_assoc($resultado)){?> <option value="<?php echo $dados['IdProva'];?>"> <?php echo $dados['NomeProva'];?></option> <?php } ?> </select> </div> </div> <div class="row"> <div class="col-md-12"> <table class="table"> <thead> <tr> <th>ID </th> <th>Nome</th> <th>Opções</th> <th>Inscrito</th> <!-- <th>Foto</th> --> </tr> </thead> <tbody> <?php while($linhas = mysqli_fetch_array($resulta)){ $naame = $linhas['Nome']; $noome = base64_decode($naame); echo "<tr>"; echo "<td>".$linhas['IdAtleta']."</td>"; echo "<td>".$noome."</td>"; //echo "<td>".Não."</td>"; ?> <td> <a href='administrativo.php?link=12&IdAtleta=<?php echo $linhas['IdAtleta'];?>'> <button type='button' class='btn btn-xs btn-primary'>Inscrever</button></a> <a href='processa/proc_apagar_atleta.php?IdAtleta=<?php echo $linhas['IdAtleta'];?>'><button type='button' class='btn btn-xs btn-danger'>Anular</button></a> <?php echo "</tr>"; } ?> </tbody> </table> </div> </div> </div> <!-- /container --> Podem ajudar-me?
       
      Muito obrigado, desde já.

    • Por rorlando
      Bom dia!
      tento fazer consulta em várias tabelas. tudo vai bem até a 3ª, a partir da 4ª a ampola da consulta fica rodando, mas não trás nenhum resultado. 
      O código que estou utilizando para meu banco é o seguinte:
      select so01.documento,so01.digito, so01.nome, so01.sexo, so01.situacao, so01.regional, so01.categoria, so01.observacao, so01.tipo, so01.n_spprev, so02.endereco, so02.bairro, so02.cidade, so02.estado, so02.cep, so02.aniversario,so03.rg, so03.cpf, so03.email, so04.estado_civil, so04.ddd, so04.telefone, so04.graduacao, so04.nascimento, so04.admissao, so04.admor from so01, so02, so03, so04 where so01.documento=so02.documento and so01.documento=so03.documento and so01.documento=so04.documento and so01.situacao <> 'demitido' and so01.tipo <> 'entidade' order by so01.regional, so01.tipo Quando não incluo a tabela so04 e suas referências eu obtenho o retorno.
      alguém teria a solução para meu problema? mesmo que tenha que alterar todo o código.
      Obrigado.
       
    • Por MateusFreitas01
      Olá. Tenho um banco de dados com os seguintes campos:
       
      ID, NOME, TELEFONE, E-MAIL, CURSO, CIDADE.
       
      Bem, esse é um pequeno cadastro que vai funcionar durante alguns dias em um host em rede local.
       
      Porém, precisava fazer uma seleção dos três cursos mais requisitados (conforme as pessoas vão utilizando).
       
      Qual a mais mais indicada de fazer isso?
       
      Tinha pensado em criar uma tabela separado e registrar o Curso e a quantidade de pessoas que desejam fazer, então a cada cadastro seria adicionado uma conforme a escolha, porém é seguro esse número de pessoas alterando o banco ao mesmo tempo?
       
      Pois vão estar sempre "capturando" o valor e adicionando, "capturando" e adicionando...
       
      Mas, tinha pensado também em selecionar do banco atual (citado no começo) para fazer isso, mas não sei como.
       
      Poderiam dar uma dica?
    • Por Handrix
      Eai galera do fórum, tudo certo?!
       
      Então estou com um probleminha que estou atualizando um sistema que é desenvolvido em PHP puro e estou colocando ele em Laravel, porém, nunca tinha feito mais de um join e com parâmetros "AND" por isso gostaria que me ajudassem, como posso colocar esse SELECT no controller do Laravel?
       
      <?php $users = "SELECT * FROM ma_usuario u, ma_user_tipo t, ma_user_tipo_rel r WHERE ma_user_tipo.tp_usr_id=ma_user_tipo_rel.tp_usr_id AND ma_usuario.usr_id=ma_user_tipo_rel.usr_id AND ma_usuario.usr_status='Ativo' AND r.tp_usr_id='$id' ORDER BY u.usr_id"; ?> Como são vários parâmetros tive um nó no cérebro e não entendi como montar kkk,
      Se alguém puder me dar uma luz ficarei grato!
       
       
      Desde já, grato!
    • Por drx
      Olá Companheiros!
       
      Eu estou carregando os dados de uma base de dados em uma div e o problema que estou enfrentando é, que, todas as vezes que eu seleciono um novo item na select option, a página realiza um refresh indesejádo, deslocando a visualização dos dados. Alguém pode me auxiliar neste problema ?
      Desde já agradeço.
       
       
      Eu submeto o envio do form, através de uma jquery.
      Código;
      <script type="text/javascript">
      $(document).ready(function(){ 
      $("#cbo_uds").click(function(){   // <<< select option

          $("#form_res").submit()          // <<< nome do meu formulário
          
         });    
      });    
      </script> 
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: