2010-11-23 5 views
3

私はダウンロードコンポーネントを持っており、カテゴリにサブキャットとアイテム数を事前に表示します。両方の作品のうちの1つですが、両方を取得しようとすると、その結果は両方の作品の倍です。2 LEFT JOINSはクエリでカウントされます

はコード私が使用:

がSELECT * itemscountはLEFT AS(jos_foc_downl_categories FROM
JOINを、
数catscount AS(b.parentid)、
数(c.id)AS。 C ON c.catid = a.id AS jos_foc_downl_items)
LEFTはa.parentid = 0
GROUP BYが

をa.id b.parentid = a.id
ON Bとjos_foc_downl_categoriesをJOIN 10

これは、4つのサブカテゴリと5つのファイル(catscountの場合は20個、itemscountの場合は20個のファイル)の結果です。

この問題は何ですか?ありがとう!

答えて

7

重複した値を含めて、すべての行がカウントされています。 DISTINCTを使用すると、それぞれ異なる値が1回だけカウントされます。

SELECT a.*, 
count(DISTINCT b.parentid) AS catscount, 
count(DISTINCT c.id) AS itemscount 
.... 
+0

お返事ありがとうございました!これは魅力のように機能します。 – Bert

+0

カウントごとに1つのGROUP BY条件を追加する必要がありましたが、効果がありました。どうも –