2011-07-29 22 views
1

最近、ある会社が複数のデータベースをPHPでブリッジするように依頼しました。新しいデータベースのほとんどはMySQLですが、PROGRESSデータベースです。私は若干の誤りに遭遇するまで、すべてがうまくいっていた。PHP ODBC SQL JOIN

Field j.JobNum not found in LOCATION 

私は最後の結合を削除すると、それが正常に動作します:

コードがj.JobNumは、次のエラーを返すことを除いて素晴らしい実行されます。重複するフィールドでも同じことが起こります。行が重なり合う場合、それらは出力されません。

$table_name = "Customer"; 
$fields = 'j.JobNum, Name, City, State, Zip'; 

$conn = odbc_connect($dsn, $username, $password, SQL_CUR_USE_ODBC); 

$field_array = explode(', ', $fields); 

$sql = "SELECT TOP 50 ".$fields." FROM PUB.JobProd j LEFT JOIN PUB.BookOrd b ON j.OrderNum=b.OrderNum LEFT JOIN PUB.Customer c ON b.CustNum=c.CustNum LEFT JOIN PUB.JobHead jh ON j.JobNum=jh.JobNum"; 
    echo '<table>'; 
    echo '<tr><td>JobNum</td><td>Name</td><td>City</td><td>State</td><td>Zip</td></tr>'; 
    $rs = odbc_exec($conn,$sql) or die('Select failed!'); 
     while(odbc_fetch_row($rs)){ 
      echo '<tr>'; 
      foreach($field_array as $key=>$field){ 
       echo "<td>".odbc_result($rs, $field)."</td>"; 
      } 
      echo '</tr>'; 
     } 
    echo '</table>';  
odbc_close($conn); 

解決方法はありますか?私のコードに何か問題がありますか?

答えて

0

この

$sql = "SELECT TOP 50 ".$fields." FROM PUB.JobProd AS j LEFT JOIN PUB.BookOrd AS b 
ON j.OrderNum=b.OrderNum LEFT JOIN PUB.Customer AS c 
ON b.CustNum=c.CustNum LEFT JOIN PUB.JobHead AS jh 
ON j.JobNum=jh.JobNum"; 
を行うようにしてください