子查询语法在Microsoft Query中的差异
我上周发布了一个关于在Microsoft Query中使用子查询的问题,尽pipe在那个例子中我的问题没有解决,但是我发现问题比以前的情况要复杂得多。
我通过ODBC尝试在Microsoft Query(从Excel 2010)中连接到一个Informix数据库来执行一个简单的查询,并且在尝试使子查询的语法正确时遇到了很多麻烦。 我有一种感觉,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中使用的语法必须适合数据源。但是,当我查找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);
我彻底失去了。 任何援助将不胜感激!
你有没有尝试过这样的表别名:
SELECT a.* FROM ( SELECT x0.id, x0.creation_date FROM coastal.waybill x0 ) a
我过去MS查询了很多关于Oracle数据库和子查询不需要别名,然后我转移到MS SQL,这需要他们。