Jump to content
Sign in to follow this  
asacap1000

Resultado de um Select transformar em variavel e executar outro select

Recommended Posts

Galera estou com uma zica aqui e está me dando dor de cabeça

 

tenho um select que me traz os resultados em uma grid, pois bem um dos resultados eu quero converter em variável para utilizar o resultado desta variável em outro select na mesma página. É possivel?

Segue um pouco do que estou fazendo.

 

Select principal:

if (isset($_POST['buscar'])) {
  $d = $_POST['buscar'];
         $stmt = ociparse($connect,"Select distinct  IO.ID_IN_OUT, decode(length(k.suchbegriff),
              14,
              substr(k.suchbegriff, 1, 2) || '.' ||
              substr(k.suchbegriff, 3, 3) || '.' ||
              substr(k.suchbegriff, 6, 3) || '/' ||
              substr(k.suchbegriff, 9, 4) || '-' ||
              substr(k.suchbegriff, 13, 2),
              substr(k.suchbegriff, 1, 3) || '.' ||
              substr(k.suchbegriff, 4, 3) || '.' ||
              substr(k.suchbegriff, 7, 3) || '-' ||
              substr(k.suchbegriff, 10, 2)),
       k.name,
       TO_CHAR(i.time_arrival, 'DD/MM/YYYY HH24:MI:SS'),
       TO_CHAR(i.time_in, 'DD/MM/YYYY HH24:MI:SS'),
       TO_CHAR(i.time_release_pp, 'DD/MM/YYYY HH24:MI:SS'),
       TO_CHAR(D.DATUM_CLTRANSIT, 'DD/MM/YYYY HH24:MI:SS'),
       io.document,w.mng_vol,w.gew,w.gew_doc,
        DECODE (w.instru_arm,'DE', 'DESOVA','SR','SOBRE RODAS', 'IN', 'INHOUSE'),
    upper(sp.name),
     v.plate,w.nr_lieferschein
  from in_out i, in_out_pos io, we w, doccontrol d, klienten k, spediteure sp, vehicle v  
 where i.lager = io.lager
   and i.id_in_out = io.id_in_out
   and i.art_in_out = 'LI'
   and io.lager = w.lager
   AND sp.id_spediteur = i.id_spediteur
   and io.lager = v.lageR
   and i.id_vehicle = v.id_vehicle(+)
   and io.document = d.document
   and io.typ_document = w.typ_doc
   and io.container_num = w.nr_zoll
   and io.id_klient = w.id_klient
   and w.lager = d.lager
   --and w.typ_doc = d.typ_document
   and w.nr_doc = d.document
   and io.lager = k.lager
   and io.id_klient = k.id_klient
   and k.suchbegriff = '$_SESSION[sobrenome]'
   and (io.document = '$d' or IO.CONTAINER_NUM = '$d')
   ");

Os resultados deste select eu trago da seguinte forma

<table class="easyui-datagrid" id="dg" "
                title="Acompanhamento de Transito ***Chegada de Mercadoria"
                url="apontador1_getdata.php" iconCls="icon-search" toolbar="#tt"style="width:1100px"">
      <thead>
      <tr>
      <th field="TICKET"  align="left" sortable="true"><div align="center"><strong>TICKET</strong></div></th> 
      <th field="CNPJ"  align="left" sortable="true"><div align="center"><strong>CNPJ</strong></div></th>
      <th field="NOME" align="left" sortable="true"><div align="center"><strong>NOME</strong></div></th>
      <th field="DTA"  align="left" sortable="true"><div align="center"><strong>DTA / NF</strong></div></th>
      <th field="INSTR"  align="left" sortable="true"><div align="center"><strong>INSTRUÇÃO</strong></div></th>
      <th field="TRANSPORTADORA" align="left" sortable="true"><div align="center"><strong>TRANSPORTADORA</strong></div></th>
      <th field="PLACA" align="left" sortable="true"><div align="center"><strong>PLACA</strong></div></th>
      <th field="LOTE" align="left" sortable="true"><div align="center"><strong>LOTE</strong></div></th>
      </tr>
</thead>
        <?php 
	  ociexecute($stmt,OCI_DEFAULT);
      
    while (($row = oci_fetch_object($stmt)) != false) { 
	    $lot1 = OCIResult ($stmt, 15);
        echo "<tr>\n";
                  echo "<td>". ociresult($stmt,1) . ""; 
                  echo "<td>". ociresult($stmt,2) . ""; 
                  echo "<td>". ociresult($stmt,3) . "";
		  echo "<td>". ociresult($stmt,8) ."";
   		  echo "<td>". ociresult($stmt,12) .""; 
		  echo "<td>". ociresult($stmt, 13) ."";
		  echo "<td>". ociresult($stmt, 14) ."";
		  echo "<td>". $lot1 ."";
	echo "</tr>\n";
          } 
	   echo "</table>\n";     
	?>

Podem ver que o ultimo resultado eu já transformei em variável (". $lot1 .";)

Agora eu preciso que o resultado desta variavel seja vista no select abaixo para assim executar e me trazer os resultados.

segue o select:

$stmx = ociparse($connect,"select C.ID_ARTIKEL || ' -> ' || ar.bez_1 produto, 
		   null tipo_operacao, -- arrumar apos criação da pergunta
		   D.QTD_PREV qtde_dec,
		   C.QTD_REAL qtde_rec
	  from (SELECT a.charge_von,
				   a.id_artikel,
				   NVL(a.qtd, 0) - NVL(b.qtd, 0) QTD_REAL
			  FROM (select id_artikel, charge_von, nvl(SUM(MNG), 0) qtd
					  from bewegungen
					 where charge_von = '$lot1'
					   and art_bew = 'WE1Q'
					 GROUP BY charge_von, id_artikel) a,
				   (select id_artikel, charge_von, nvl(SUM(MNG), 0) qtd
					  from bewegungen
					 where charge_von = '$lot1'
					   and art_bew = 'AJNE'
					 GROUP BY charge_von, id_artikel) b
			 WHERE a.charge_von = b.charge_von(+)
			   AND a.id_artikel = b.id_artikel(+)) C,
		   (SELECT CHARGE, ID_ARTIKEL, SUM(MNG_SOLL) QTD_PREV
			  FROM WEPOS
			 WHERE CHARGE = '$lot1'
			   AND STAT <> '80'
			 GROUP BY CHARGE, ID_ARTIKEL) D,
			 artikel ar
	 WHERE C.CHARGE_VON = D.CHARGE
	   AND C.ID_ARTIKEL = D.ID_ARTIKEL
	   AND C.ID_ARTIKEL = AR.ID_ARTIKEL 
	   UNION
	SELECT decode(w.instru_arm, 'SR', 'VEÍCULO', 'CONTAINER') produto,
		   null tipo_operacao, -- arrumar apos criação da pergunta
		   COUNT(w.instru_arm) qtde_dec,
		   COUNT(w.instru_arm) qtde_rec
	  FROM we w
	 WHERE w.nr_lieferschein = '$lot1'
	   AND w.instru_arm <> 'DE'
	   AND w.stat = '90'
	 group by w.instru_arm");

Agora não estou conseguindo fazer isso.

Share this post


Link to post
Share on other sites

Acho que o problema está no 2º SQL, ficou faltando isso (em vermelho):

 

where a.charge_von = '$lot1'

Este segundo select está 100% já testei ele isolado chegou a passar pela cabeça estas condições e testei mas não resolveu, adicionando os alias. só não consegui mesmo vincular a variável

Share this post


Link to post
Share on other sites

Vc precisa rodar o segundo select para cada linha do primeiro ?

 

Nesse caso, eu sugiro vc guardar a coluna que vc quer do primeiro select em um array, e então usar um IN() no segundo.

  • +1 1

Share this post


Link to post
Share on other sites

você precisa rodar o segundo select para cada linha do primeiro ?

 

Nesse caso, eu sugiro você guardar a coluna que você quer do primeiro select em um array, e então usar um IN() no segundo.

Vou tentar fazer isso, que você falou. na pergunta do select o segundo só vai precisar apenas do resultado de uma informação do primeiro select

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
Sign in to follow this  

×

Important Information

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