Thread: Nested select to same tsble
I hope you won't mind helping me here: (I have searched the Postgres mailing lists but no-one seems to have had this problem) None of the documentation seems to address this:
Is this legal?
$sSql = "select glatype, gla.glacode, gladescrip, gladepr, gll.*
from gll,gla
where gll.glacode = gla.glacode
and gla.glatype = '".strtoupper($glrowresult)."'
and gll.fisyear = $year
order by gll.glacode";
$result1 = pg_exec($conn, $sSql);
for($i=0;$i<pg_numrows($result1);$i++)
{
$glresult = pg_fetch_array($result1,$i);
if($glresult["glatype"]=="FA")
{
$sSql="select * from gll
where gll.glacode = '".strtoupper($glresult["gladepr"])."'
and gll.fisyear = $year";
from gll,gla
where gll.glacode = gla.glacode
and gla.glatype = '".strtoupper($glrowresult)."'
and gll.fisyear = $year
order by gll.glacode";
$result1 = pg_exec($conn, $sSql);
for($i=0;$i<pg_numrows($result1);$i++)
{
$glresult = pg_fetch_array($result1,$i);
if($glresult["glatype"]=="FA")
{
$sSql="select * from gll
where gll.glacode = '".strtoupper($glresult["gladepr"])."'
and gll.fisyear = $year";
The second select does not work - it gives no error message either. I wonder if it does not like selecting a seond time from gll while in the loop after the first select. The idea is that some gl accounts need to refer to other ones for a calculation to be done during this report I am trying to do.
Thanks
Office: +27 (21) 975 2440
Cell: +27 (82) 770 8749
_________________________________
Cell: +27 (82) 770 8749
_________________________________
on 11/18/02 12:06 AM, andy@horizon.co.za purportedly said: > $sSql = "select glatype, gla.glacode, gladescrip, gladepr, gll.* > from gll,gla > where gll.glacode = gla.glacode > and gla.glatype = '".strtoupper($glrowresult)."' > and gll.fisyear = $year > order by gll.glacode"; > $result1 = pg_exec($conn, $sSql); > for($i=0;$i<pg_numrows($result1);$i++) > { > $glresult = pg_fetch_array($result1,$i); > if($glresult["glatype"]=="FA") > { > $sSql="select * from gll > where gll.glacode = '".strtoupper($glresult["gladepr"])."' > and gll.fisyear = $year"; > > The second select does not work - it gives no error message either. I wonder > if it does not like selecting a seond time from gll while in the loop after > the first select. The idea is that some gl accounts need to refer to other > ones for a calculation to be done during this report I am trying to do. There are no restrictions on the number of concurrent select results, other then RAM and disk space. Remember, once a command is exec'ed, the database returns the *entire* result to the client (PHP), and is no longer involved. That is why you can close a connection to a database and still work with the result. Anyway, you certainly can do this, and if it isn't working, there's probably something wrong with the code or your assumptions about the query results. Use print() statements so you can follow the code. Remember, you cannot redefine $result1, i.e. use that variable for storing results from the second query. Why do you not simply combine the queries into a single query join? It would be more efficient that way. Keary Suska Esoteritech, Inc. "Leveraging Open Source for a better Internet"