Ir para conteúdo
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


  • Conteúdo Similar

    • Por Toni Stark
      Bom dia!
       
      Cada vez que é clicado em um livro, é acrescentado uma linha no banco de dados, como eu faço para saber quais são os 5 livros mais vistos, ou seja, quais livros possui mais linhas nesta tabela. As informações que são gravadas são:
      ID - idLivro - DATA

      Qualquer ajuda é bem-vinda, valeu!
    • Por MatheusAssuncao
      Boa tarde pessoal!
       
      Eu criei um formulário HTML no wordpress para salvar no banco os dados do contato. Tenho um SELECT estado:
      <select id='estado' name='estado'>    <option value='UF'>Nome do estado</option> </select> E um select cidade. Ao selecionar um estado eu preciso que carregue o select de cidades via ajax. As cidades estão em uma tabela do banco de dados do wordpress.
      Meu script PHP que recebe a requisição ajax e consulta no banco é esse:
      <?php include "conexao.php"; $estado = mysql_real_escape_string( $_GET['estado'] ); $cidades = []; $resultado = mysql_query("SELECT Codigo, Nome FROM Municipio WHERE Uf='$estado' ORDER BY Nome", $conexao); while ( $row = mysql_fetch_array( $resultado ) ) array_push($cidades, ['Codigo' => $row['Codigo'], 'Nome' => utf8_encode($row['Nome'])]); echo(json_encode( $cidades )); O script JS que faz a requisição é esse:
      $('#estado').change(function () { if ($('#estado').val()) { $.getJSON('cidades.ajax.php?search=', { estado: $('#estado').val(), ajax: 'true' }, function (j) { var options; for (var i = 0; i < j.length; i++) { options += '<option value="' + j[i].Codigo + '">' + j[i].Nome + '</option>'; } $('#cidade').html(options).show(); }); } }); Isso funciona no meu servidor próprio, mas não consigo fazer funcionar no wordpress. Implementei o script JS através de um plug-in pra inserir JS nas páginas, mas o Wordpress não permite executar um arquivo PHP não registrado por ele (ou algo assim).
       
      Poderiam me ajudar? Como faço pra fazer com que meu script AJAX requisite a consulta no banco do wordpress onde estão as cidades?
       
      Espero ter sido claro.
    • Por Gilslan
      Como posso fazer para exibir apenas uma vez os nomes com duplicidade e somar os valores?
       
      no anexo são 4 lançamentos, porem, apenas 2 contribuintes. tem como exibir apenas dois contribuintes e o com duplicidade somar os valores?
       
      Tentei mais não consegui fazer.

    • Por TUAN
      Ola pessoal boa noite, 
      teria como eu passar meu banco de dados de um site todo php com todos os items cadastro no sql, para
      o Wordpres sem perder nada ?
      Eu vejo que as tabelas do wordpress são muito diferentes,
      pois até então é ate dificil de saber qual tabela seria..
      este é o meu sql
       
      CREATE TABLE IF NOT EXISTS `produtos` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `titulo` varchar(255) NOT NULL,
        `descricao` varchar(500) NOT NULL,
        `valor` varchar(255) NOT NULL,
        `marca` varchar(25) NOT NULL,
        `imagem` varchar(255) NOT NULL,
        `id_categoria` int(11) NOT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;
       
      INSERT INTO `produtos` (`id`, `titulo`, `descricao`, `valor`, `marca`, `imagem`, `id_categoria`) VALUES
      (1, 'Camisa', testetstetstetsteet, '150.00', 'BLUE', 'camisa_m.png', '1');
      (2, 'Camisa Black', testetstetstetsteet, '80.00', 'TOP', 'camisa_black_g.png', '2');
      (3, 'Bermudas', testetstetstetsteet, '60.00', 'SURF TROPICAL', 'bermuda.png', '3');
       
       
                         Desde já Agradeço
       
       
    • Por ciloco
      Caros, boa tarde!
      Eu preciso fazer uma conexão com o SQL Server, e puxar uma View.
      Porém não estou conseguindo realizar as conexões.
       
      Poderiam me ajudar?
      1º Conexão
      <?php //habilita mensagens de erros ini_set('display_errors', true); error_reporting(E_ALL); // $servidor = "LOCALHOST"; //servidor que não é localhost $usuario = ""; //Windows Authentication $senha = ""; $banco = "PVH_MON"; $con= mssql_connect($servidor,$usuario,$senha); $db = mssql_select_db($banco, $con); if ($con && $db)     echo "Parabens!! A conexão ao banco de dados ocorreu normalmente!";     else          echo "Nao foi possivel conectar ao banco MSSQL"; ?>  
      2º Query
       
      USE PVH_MON   BEGIN TRY DROP TABLE #tmp_dados END TRY BEGIN CATCH /**/ END CATCH   SELECT        SJ.Name AS JobName,        CAST(SJH.run_date AS VARCHAR(8)) AS LastRunDate,        RIGHT('000000' + CAST(SJH.run_time AS VARCHAR(6)), 6) AS Time,        CASE SJH.run_status              WHEN 0 THEN 'Failed'              WHEN 1 THEN 'Successful'              WHEN 3 THEN 'Cancelled'              WHEN 4 THEN 'In Progress'        END AS LastRunStatus,        ROW_NUMBER() OVER(PARTITION BY SJ.Name ORDER BY SJ.Name, SJH.run_date DESC, SJH.run_time, SJH.instance_id DESC) AS linha INTO #tmp_dados FROM        [BRASQ01].[msdb].[dbo].[sysjobhistory] SJH        JOIN [BRASQ01].[msdb].[dbo].[sysjobs] SJ ON (SJH.job_id = SJ.job_id) ORDER BY        SJ.Name, SJH.run_date DESC, SJH.run_time DESC     SELECT        JobName,        RIGHT(LEFT(lastrundate, 8), 2) + '/' + RIGHT(LEFT(lastrundate, 6), 2) + '/' + LEFT(lastrundate, 4) + ' ' + LEFT(Time, 2) + ':' + RIGHT(LEFT(Time, 4), 2) + ':' + RIGHT(Time, 2) AS LastRunDate,        LastRunStatus FROM #tmp_dados WHERE linha = 1 ORDER BY JobName   DROP TABLE #tmp_dados  
×

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: