私は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
Document テーブルから取得し、Doctpo フィールドからタイプ 1、6、および 7 のすべてのファイルを取得し、フィールドにあるsum
ものを実行しDocimp
、1 に等しい加入者番号 (abocod) でフィルタリングし、結果をその名前 (エイリアス) と共に配置します。
とsql1
同じ関数sql
ですが、ここでは、上記と同じフィールドを使用し、タイプ 2 と 3 のみを選択して顧客が行った支払いを示します。
sql3
sql
andを 1 つのクエリに結合したクエリで、 andsql1
によって個別に作成されたすべての関数を実行します。sql
sql1
クエリ (SQL) は、ビジュアル フォックス プロで実行すると完全に機能しますが、php から実行するsql
と機能しますが、ステートメントsql1
で常にエラーがスローされます。sql3
テーブルが認識されていない、または存在しないと言っています。
これが Visual foxpro 自体で完全に機能する場合、これらのテーブルと結合できない理由がわかりません。
php、odbc、およびビジュアルフォックスプロを使用した「よりクリーンな」または「より良い」アプローチがあるかどうかを知りたいです。
誰でもこれに光を当てることができますか?
前もって感謝します!