1

私は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"););
?>

sqlDocument テーブルから取得し、Doctpo フィールドからタイプ 1、6、および 7 のすべてのファイルを取得し、フィールドにあるsumものを実行しDocimp、1 に等しい加入者番号 (abocod) でフィルタリングし、結果をその名前 (エイリアス) と共に配置します。

sql1同じ関数sqlですが、ここでは、上記と同じフィールドを使用し、タイプ 2 と 3 のみを選択して顧客が行った支払いを示します。

sql3sqlandを 1 つのクエリに結合したクエリで、 andsql1によって個別に作成されたすべての関数を実行します。sqlsql1

クエリ (SQL) は、ビジュアル フォックス プロで実行すると完全に機能しますが、php から実行するsqlと機能しますが、ステートメントsql1で常にエラーがスローされます。sql3テーブルが認識されていない、または存在しないと言っています。

これが Visual foxpro 自体で完全に機能する場合、これらのテーブルと結合できない理由がわかりません。

php、odbc、およびビジュアルフォックスプロを使用した「よりクリーンな」または「より良い」アプローチがあるかどうかを知りたいです。

誰でもこれに光を当てることができますか?

前もって感謝します!

4

1 に答える 1