Jump to content
lucascatani

Unir 2 selects

Recommended Posts

Preciso fazer uma subtração entre produtos comprados e retirados. Tenho abaixo o meu código, um select que soma os comprandos e outro os retirados, preciso retornar um valor em JSON.

$loteproduto = mysql_real_escape_string( $_REQUEST['loteproduto'] ); /*$loteproduto =6635544;*/
	$idproduto = mysql_real_escape_string( $_REQUEST['idproduto'] ); /*$idproduto = 9;*/

	$quantidades = array();
	
	
	/*Lote*/	
	$sqllote = mysql_query("SELECT loteproduto FROM entradas WHERE identrada = '$loteproduto';");
	while($resultlote = mysql_fetch_assoc($sqllote))
	{
		$loteproduto1 = $resultlote['loteproduto'];
	}	
	
	/*SQL Compradas*/
	$sql = "SELECT SUM(quantidadecomprada) AS TOTAL FROM entradas WHERE loteproduto='$loteproduto1' AND idproduto = 			'$idproduto'";
	
	$res = mysql_query( $sql );
	while ( $row = mysql_fetch_assoc( $res ) ) {
		$quantidades[] = array(			
			'quant'	=> $row['TOTAL'],
		);
	}
	
	/*SQL Retiradas*/
	$sqlretiradas = "SELECT SUM(quantidaderetirada) AS TOTALRETIRADAS FROM retiradas WHERE loteproduto='$loteproduto1' AND idproduto = 			'$idproduto'";
	
	$resretiradas = mysql_query( $sqlretiradas );
	while ( $rowretiradas = mysql_fetch_assoc( $resretiradas ) ) {
		$quantidadesretiradas[] = array(			
			'quantretiradas'	=> $rowretiradas['TOTALRETIRADAS'],
		);
	}

	echo( json_encode( $quantidades ) );
	

Share this post


Link to post
Share on other sites

algo assim com JOIN:

<?php

  $loteproduto = mysql_real_escape_string( $_REQUEST['loteproduto'] ); /*$loteproduto =6635544;*/
  $idproduto = mysql_real_escape_string( $_REQUEST['idproduto'] ); /*$idproduto = 9;*/

  $quantidades = array();
  
  /*Lote*/  
  $sql = mysql_query("SELECT SUM(quantidadecomprada) AS TOTAL, SUM(quantidaderetirada) AS TOTALRETIRADAS
        FROM entradas 
        INNER JOIN retiradas
        ON entradas.idproduto = retiradas.idproduto AND entradas.loteproduto = retiradas.loteproduto
        WHERE retiradas.loteproduto='$loteproduto' AND retiradas.idproduto = '$idproduto'");

  // echo $sql;

  while ( $row = mysql_fetch_assoc( $sql ) ) {
    $quantidades[] = array(     
      'quant' => $row['TOTAL'],
      'quantretiradas'  => $row['TOTALRETIRADAS']
    );
  }

  echo( json_encode( $quantidades ) );
verifique a query

Share this post


Link to post
Share on other sites

Chegamos nessa query, que mostra a quantidade comprada certo, porém mostra a quantidade retirada errado:

SELECT SUM(quantidadecomprada) AS TOTAL, SUM(quantidaderetirada) AS TOTALRETIRADAS
       FROM entradas
       INNER JOIN retiradas
       ON entradas.idproduto = retiradas.idproduto 
       AND entradas.loteproduto = retiradas.loteproduto
       WHERE retiradas.loteproduto=6635544 AND retiradas.idproduto = 9 
       AND entradas.loteproduto=6635544 AND entradas.idproduto = 9

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 Pitag346
      Boa noite pessoal...
      Eu não estou conseguindo fazer uma sub consulta... Se alguém puder clarear minhas ideias isso ser de muita ajuda.
      Fiz varias pesquisas e ainda não entendi como posso fazer o seguinte:
       
      Tenho 3 tabelas no banco de dados a tabela: Users, Ingress, Vendas.
      A tabela ingress seria a tabela onde armazeno meus produtos, contendo o preço do produto obviamente.
      E a tabela vendas eu armazeno o ID do produto vendido e o ID do user que vendeu... 
      Quero fazer uma sub consulta pra exibir dentro de um loop o valor total de produtos vendidos por cada usuario, porem eu não faço ideia como fazer, tentei a seguinte forma:
       
      $sq = " SELECT P.id, (SELECT COUNT(C.lote_id) FROM ingress C WHERE ticket_promote_id = P.id ) FROM users GROUP BY P.id "; $t2 = $conn->query($sq); Mas não estou entendendo como fazer...
      Se alguém puder só me dar um exemplo, eu só quero pegar o preço da outra tabela e exibir dentro de um loop em uma LISTA contendo, 
      USER, VENDAS, VALOR TOTAL VENDIDO... 
       
      Obrigado. att.
    • By jacksonihs
      Minha consulta está muito demorada, alguém tem alguma ideia de como melhorar, creio que o segundo select está piorando o processo, rsrsrs...
                      $consumption = $this->reading                 ->selectRaw('apartments.condominium_id,                  condominiums.name,                  apartments.number,                  apartments.block,                     readings.reading as reading,                      readings.reading/1000 as reading_m3,                      DATE_FORMAT(readings.readed_at, "%d/%m/%Y") as date,                     DATE_FORMAT(readings.readed_at, "%H:%i") as hour,                      IFNULL(readings.reading/1000 -                      (select rd.reading/1000 from readings rd where rd.id < readings.id and rd.meter_id = readings.meter_id                          order by rd.readed_at desc limit 0,1),0) as consumption,                      readings.readed_at as readed_at,                      readings.meter_leak,                      readings.meter_wire_cut,                      readings.meter_id,                      meters.meter_number,                      meters.transmitter_number,                      meter_types.type')                 ->join('meters', 'readings.meter_id', '=', 'meters.id')                 ->join('meter_types', 'meters.meter_type_id', 'meter_types.id')                 ->join('apartments', 'meters.apartment_id', '=', 'apartments.id')                 ->join('condominiums', 'condominiums.id', '=', 'apartments.condominium_id')                 ->where('condominiums.id', '=', $id)                 ->whereBetween('readings.readed_at', [$dateStart, $dateEnd])                 ->orderBy('meters.meter_number', 'asc')                 ->orderBy('readings.readed_at', 'asc')                 ->get();
    • By Koromon
      Olá galera,
      Criei um arquivo .bat para rodar comandos do MySQL automaticamente, com o agendador de tarefas do computador.
      Nesse arquivo .bat tem dois tipos de comandos:
      1. Inserir dados .txt em uma primeira tabela (I);
      2. Inserir os dados da primeira tabela (I) em outra (II);
      O problema é que esse .bat só faz um dos comandos (inserir dados em tabelas) o outro ele ignora.
      Se eu fizer manualmente pelo MySQL Workbench, roda tudo tranquilo. Alguém imagina o que pode estar acontecendo?
    • By lorenapereira
      Uma filial possui diversos veículos. Um veículo pode ser vinculado somente a uma filial. Sabemos ainda que um veículo é produzido por um fabricante, que por sua vez produz vários veículos. Os cadastros devem ser compostos dos seguintes atributos:
       
       Filial: código, nome, endereço (logradouro, número, bairro, cidade, estado, cep) e telefones.  Veículo: placa, ano, modelo, tipo de combustível, chassis e cor.  Fabricante: código e nome. Com base nessas informações, desenvolva os Modelos Conceitual e Lógico, utilizando a ferramenta Case BR Modelo e implemente seu projeto no MySQL com os comandos DDL da linguagem SQL. 
      Desenvolva instruções para inclusão de pelo menos 5 (cinco) registros para Fabricante, para Veículo e Filial; Desenvolva uma instrução para alteração da cor de um veículo; Desenvolva uma instrução para selecionar todos os veículos da marca Fiat e de cor branca, que apresente todos os campos ordenando de forma decrescente pelo ano do veículo; Desenvolva uma instrução para excluir um registro de Filial.
    • By Marcos PP
      Alguém poderia me dar um exemplo de como pegar este retorno em Json para gravar em um banco de dados, a questão do banco e conexões não e necessário, apenas como pegar os retornos para trabalhar com eles


      Esta e a API
      http://click.omie.com/developer-0o843564k
×

Important Information

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