Jump to content

Archived

This topic is now archived and is closed to further replies.

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.

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

×

Important Information

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