[英]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,并把结果与它的名称(化名)。
sql1
与sql
功能相同,但是这是客户使用与上面相同的字段但仅选择类型2和3进行的付款。
sql3
是一个查询,它将sql
和sql1
为一个查询,并执行sql
和sql1
分别进行的所有功能。
当我将它们运行到Visual sql1
Pro中时,查询(SQL)可以完美地工作,但是当我从php执行它们时, sql
和sql1
可以正常工作,但是它始终会在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.