上周我发布了一个关于在 Microsoft Query 中使用子查询的问题,虽然我在那个实例中的问题没有得到解决,但我发现这个问题比以前的情况要基本得多。
我通过 ODBC 连接到 Informix 数据库,尝试在 Microsoft Query(来自 Excel 2010)中执行简单查询,但在尝试正确获取子查询的语法时遇到了很多麻烦。我有一种感觉,MSQuery 被一些与 Informix/ODBC 源相关的特性所困扰。我之所以这么想是因为如果我尝试使用 Excel 电子表格作为我的数据源的非常简单的子查询,则以下语法有效:
SELECT * FROM
(
SELECT x0.field1, x0.field2
FROM `C:\USERS\NAME\DIRECTORY\Test.xlsx`.`Sheet1$` x0
)
但是,当我使用 Informix 数据库中的子查询尝试相同的非常简单的查询时,
SELECT * FROM
(
SELECT x0.id, x0.creation_date
FROM coastal.waybill x0
)
我收到错误"Could not add the table '(select'."
我只能推测 MSQuery 中使用的语法必须针对数据源进行定制。然而,当我在 FROM 子句中查找 Informix 的子查询语法时,我更加困惑,因为我似乎遵循了他们的语法,因为他们的例子是:
SELECT LIMIT 1 * FROM
(SELECT c.customer_num, c.lname, c.company,
c.phone, u.call_dtime, u.call_descr
FROM customer c, cust_calls u
WHERE c.customer_num = u.customer_num
ORDER BY u.call_dtime DESC);
我彻底迷路了。任何帮助将不胜感激!