繁体   English   中英

PHP中的Visual Fox Pro查询联接错误-odbc_exec

[英]Visual Fox Pro Query join error in php - odbc_exec

我有此查询用php编写:

<?php
$dsn="sistema";
$usuario="";
$clave="";
/*conexion mediante odbc*/
$cid=odbc_connect($dsn, $usuario, $clave);
if (!$cid){
exit("<strong>Ya ocurrido un error tratando de conectarse con el origen de datos.  </strong>");
}
$sql="SELECT SUM(Document.docimp) AS sumar FROM Document WHERE Doctpo IN ('1','6','7') AND Document.Abocod = 1";
$sql1="SELECT SUM(Document.docimp) AS restar FROM Document WHERE Doctpo IN ('2','3') AND Document.Abocod = 1";
$sql3="Select (A.sumar - A.restar) AS Saldo; 
From (;
Select Document.abocod,;
      (SELECT SUM(Document.docimp) AS sumar;
    FROM Document; 
    WHERE Doctpo IN ('1','6','7'); 
        AND Document.Abocod = 1;
    ),;
    (SELECT SUM(Document.docimp) AS restar ;
    FROM Document; 
    WHERE Doctpo IN ('2','3'); 
        AND Document.Abocod = 1;
    );
From; Document;
Where Document.abocod = 1;
GROUP BY Document.abocod;
)AS A";
$result=odbc_exec($cid,$sql)or die(exit("Error en odbc_exec"));
print odbc_result_all($result,"Border=1"););
?>

sql从文献表中获取,1,6-类型和7的所有文件从Doctpo字段,做一个sum的什么是在Docimp字段,由用户号码(abocod)过滤等于1,并把结果与它的名称(化名)。

sql1sql功能相同,但是这是客户使用与上面相同的字段但仅选择类型2和3进行的付款。

sql3是一个查询,它将sqlsql1为一个查询,并执行sqlsql1分别进行的所有功能。

当我将它们运行到Visual sql1 Pro中时,查询(SQL)可以完美地工作,但是当我从php执行它们时, sqlsql1可以正常工作,但是它始终会在sql3语句中引发错误。 说该表未被识别或不存在。

我不能弄清楚它如何不能与这些表进行联接,如果这在Visual foxpro本身上能很好地工作的话。

我想知道php,odbc和visual fox pro是否有“更清洁”或“更好”的方法。

任何人都可以对此有所了解吗?

提前致谢!

只运行一次查询而不是两个单独的查询,然后加入...怎么样?

select
      sum( 0000.00 + iif( Doctpo in ( '1', '6', '7' ), Document.docimp, 0 )) as Sumar,
      sum( 0000.00 + iif( Doctpo in ( '2', '3' ), Document.docimp, 0 )) as Restar,
      sum( Document.docimp * iif( Doctpo in ( '1', '6', '7' ), 1, -1 )) as Saldo
   from
      FROM Document; 
   WHERE 
          Document.Abocod = 1;
      AND Doctpo IN ('1','6','7', '2', '3'); 

我这样做的总和为0000.00 + IIF(),因为从VFP查询返回的第一个值无论是最终集合中该列类型的基础。 因此,如果您希望余额超过9999.99,则可能需要根据需要调整默认长度/精度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM