为什么我的内部联接抛出语法错误?

Why is my inner join throwing syntax errors?

为什么我的 sql 字符串抛出语法错误?答:MDBTools 不支持 JOIN 或 ORDER BY 或其他 SEE http://github.com/brianb/mdbtools/blob/master/src/sql/lexer.l

此代码无效(. 附近的语法错误):

$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql =        'SELECT "Order No", "Ship To File"."Cust Name" ';
$sql = $sql . 'FROM "Order File" ';
$sql = $sql . 'INNER JOIN "Ship To File" ';
$sql = $sql . 'ON "Order File"."Customer No" = "Ship To File"."Cust No" ';
$sql = $sql . 'WHERE "Order No"=\'RV2002-001\'';

Longer/Other 信息:
可以肯定是 "Ship To File"."Cust Name" 。扔的近了。错误,因为省略 "Ship To File"."Cust Name" 会将错误更改为接近 INNER,这让我认为问题是带有空格的字段和表的命名空间问题。

用空格替换表和字段的双引号甚至会破坏最简单的查询(` 附近的语法错误)。 INNER JOIN 查询似乎在 MS-Access 中运行良好,但使用方括号而不是双引号。

此代码也不起作用(` 处的语法错误):

$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql =        "SELECT `Order No` ";
$sql = $sql . "FROM `Order File` ";

这段代码给了我 record/result:

$db = "access.mdb";
$conn = new PDO("odbc:DRIVER=MDBTools; DBQ=$db; Uid=; Pwd=;");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql =        'SELECT "Order No" ';
$sql = $sql . 'FROM "Order File" ';
$sql = $sql . 'WHERE "Order No"=\'RV2002-001\'';

Windows Linux、PHP 版本 5.5.9-1ubuntu4.22、apache2、MDBTools 的子系统,无法更改数据库表或字段(通过符号访问数据库 link 目前其他人仍在使用 MS Access 作为他们的界面)。

"Ship To File"."Cust No" 是类型(自动编号) "Order File."Customer No" 是 type(number)

意见或建议?

MDBTools 不支持 JOIN 或 ORDER BY。参见 http://github.com/brianb/mdbtools/blob/master/src/sql/lexer.l