Sql Informix:查询合并

Sql Informix:查询合并,sql,informix,Sql,Informix,我有两个问题: select COUNT(o.id_offer) from offers o, product p where p.id_product = "+ productID +" and o.id_offer = "+ offerID +" and (b.type = 0 or o.type = "A") 此查询返回某些产品的计数 select p.id_product, p.name, s.id_supplier, s.name from product p, suppliers

我有两个问题:

select COUNT(o.id_offer) from offers o, product p where
 p.id_product = "+ productID +" and o.id_offer = "+ offerID +" and (b.type = 0 or o.type = "A")
此查询返回某些产品的计数

select p.id_product, p.name, s.id_supplier, s.name from product p, suppliers s where p.id_supplier = s.id_supplier
此查询返回所有产品数据

我想将这两个查询合并为一个查询,如下所示:

select (select COUNT(o.id_offer) from offers o, product p where
 p.id_product = p.id_product and o.id_offer = 13345 and (b.type = 0 or o.type = "A")) count,p.id_product, p.name, s.id_supplier, s.name from product p, suppliers s where p.id_supplier = s.id_supplier

有人知道如何在informix中做到这一点吗?

请使用显式连接表示法,而不是FROM子句表示法中的表名逗号列表

第一个查询需要泛化以生成产品ID和匹配计数

SELECT p.id_product, COUNT(o.id_offer) AS offer_count
  FROM offers o
  JOIN product p ON p.id_product = o.id_product -- Guessed column
 WHERE (p.type = 0 OR o.type = 'A')
 GROUP BY p.id_product
第二个查询可以转换为:

SELECT p.id_product, p.name, s.id_supplier, s.name
  FROM product p
  JOIN suppliers s ON p.id_supplier = s.id_supplier
这两个查询也可以与联接结合使用:

SELECT x.id_product, x.product_name, x.id_supplier, x.supplier_name, y.offer_count
  FROM (SELECT p.id_product, p.name, s.id_supplier, s.name
          FROM product p
          JOIN suppliers s ON p.id_supplier = s.id_supplier
       ) AS x
  JOIN (SELECT p.id_product, COUNT(o.id_offer) AS offer_count
          FROM offers o
          JOIN product p ON p.id_product = o.id_product -- Guessed column
         WHERE (p.type = 0 OR o.type = 'A')
         GROUP BY p.id_product
       ) AS y
    ON x.id_product = y.id_product

如果是关于Informix的,为什么要标记这个
mysql
?对不起,谢谢你的修复。出于某种原因,这是一个常见的错误。您能解释一下为什么要这样做吗?您应该完成SQL与它准备的字符串的分离。你还需要仔细阅读。在第一个查询中,
b.type
指的是什么还不清楚。为表提供模式会很有帮助,或者至少有一个带有显著列的大纲模式。