2014-10-03 2 views
0

내가이 2 개 쿼리 :인포믹스 : 쿼리 병합

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에서이 작업을 수행하는 방법을 알고 있습니까?

+0

왜이'mysql' 태그 않았다 Informix에 대해? – Barmar

+0

죄송합니다. 고쳐 주셔서 감사합니다 – tck

+0

어떤 이유로 든 일반적인 실수입니다. 왜 그랬는지 설명해 주시겠습니까? – Barmar

답변

1

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