【发布时间】:2018-02-21 21:56:32
【问题描述】:
我对 Informix db 有以下有效的 sql 查询。
SELECT soi_seq,soi_cusitem,max(soi_product) as ProductCode,
max(soi_custprod) as CustProductCode, max(soi_desc) AS ProductDesc,
max(soi_comdt2) AS RequiredDate, sum(soi_itqty) as Qty,
sum(soi_invval) as Nett, max(soi_discper) as Discount, max(soi_per)
as Per, max(soi_price) as ItemPrice
from soitem
where soi_ordref= ? group by soi_seq,soi_cusitem, soi_lineref
order by soi_cusitem asc
我需要加入另外两个表,但不知道如何使用 informix 语法, 基本上我需要在以下连接上方的查询中添加:
Left Join cmprod on soi_product = cmp_product
Left Join cmass on cmp_product = cmass_product
另外,在 WHERE 子句中添加以下内容:
AND cmass_assem Is Null
我可以使用旧的 MS Access 连接到 Informix 数据库而不是在代码中查询并获得所需的结果。
【问题讨论】:
-
ANSI SQL:
select ... from t1 left join t2 on t1.c = t2.d left join t3 on t2.e = t3.f where ... group by ... order by .... -
已经试过了,得到 System.Data.Odbc.OdbcException: 'ERROR [42000] [Informix][Informix ODBC Driver][Informix]出现语法错误。'
-
我解决了我的问题,将原始查询保留到数据表,创建了对数据表的单独查询,然后通过 linq 对数据表进行了所需的连接。看来我们的旧版本 informix 不支持连接。
-
您使用的是哪个版本的 Informix?如果它不支持 LEFT JOIN 表示法,那么它一定早就不支持了。