2013-02-25 1 views
-2

두 테이블 productsassets이 있습니다. 그들은 테이블 assets_products에 의해 결합됩니다.SQL을 사용하여 두 개의 개별 테이블에서 결과 반환

에 관련된 행 수를 보여주는 동시에 productsassets의 모든 행을 포함하는 테이블을 반환해야합니다.

모든 제품에 애셋이있는 것은 아니며 그 반대의 경우도 있습니다. 제로 카운트로 표시해야합니다. 예를 들어

:

product asset count 
foo  x  1 
bar  x  0 
foo  y  2 
bar  y  1 
+1

당신은 아마도 당신이 무엇을 가지고의 예와 당신이 결과로보고 싶어를 추가 할 수 있습니까? –

+0

'Full Outer Join '을 사용하여 행을 얻은 다음'count'를 실행하십시오. –

답변

1
select products.product, 
     assets.asset, 
     COUNT(assets_products.id) as count 
from assets 
cross join products 
left join assets_products 
    on (assets_products.asset_id = assets.id and 
     assets_products.product_id = products.id) 
group by products.product, assets.asset 
0
select p.product,a.asset,count(*) 
from product p 
full outer join product_asset pa 
on pa.product_id=p.product_id 
full outer join asset a 
on a.asset_id=pa.asset_id 
group by p.product_id,a.asset_id 
+0

누락 된'products' 또는'assets'을 반환하지 않습니다 –

+0

@rs. : 이제는 효과가 있습니다. – ankurtr

관련 문제