2016-10-10 16 views
0

私は次のクエリがあります:私は、すべての親カテゴリを選択したいカテゴリを選択し、サブカテゴリのトピックの数

(たとえ:

私が達成したい何
SELECT 
     c.frm_category_id, 
     c.name, 
     c.slug, 
     s.frm_category_id, 
     s.name, 
     s.slug, 
     IFNULL(COUNT(t.frm_topic_id),0) 
FROM 
     frm_categories AS c 
LEFT JOIN 
     frm_categories AS s 
    ON 
     c.frm_category_id = s.parent_frm_category_id 
LEFT JOIN 
     frm_topics AS t 
    ON 
     s.frm_category_id = t.frm_category_id      
WHERE 
     c.active = 1 
    AND 
     s.active = 1 
ORDER BY 
     c.frm_category_id ASC, 
     s.frm_category_id ASC 

を以下でありますサブカテゴリはありません)、すべてのサブカテゴリ内のすべてのトピックを数えたいとします(トピックはカテゴリではなくサブカテゴリにのみ掲載できます)。

このクエリは、サブカテゴリを含むカテゴリとその中にトピックを含むサブカテゴリのみを選択します。

誰かがこの問題を解決できますか?または、これを解決するためのヒントを教えてください。

ありがとうございます!

答えて

1

frm_topicsテーブルを使用してロジックをグループ化し、外部結合時にwhere句の代わりにon句を使用する方がよい場合があります。

SELECT 
     c.frm_category_id, 
     c.name, 
     c.slug, 
     s.frm_category_id sub_cate_id, 
     s.name, 
     s.slug, 
     IFNULL(tpc_count,0) 
FROM 
     frm_categories AS c 
LEFT join 
     frm_categories AS s 
    on 
     c.frm_category_id = s.parent_frm_category_id and c.active = 1 and s.active = 1 
LEFT JOIN 
(select frm_category_id, count(1) tpc_count from 
     frm_topics group by frm_category_id)AS t 
    ON 
     s.frm_category_id = t.frm_category_id 

sql fiddle

+0

私の謝罪を、私はどのように行うことができますこれはまさに? – yesterday

+0

@yesterdayが私の答えを更新しました。 – amow

+0

これは動作しません。アクティブとは、「カテゴリ/サブカテゴリがアクティブ」、「はい」(1)または「いいえ(0)」を意味します。私は残念ながら同じ結果を得ています。とにかく、あなたの努力に感謝します。 – yesterday

0

私は今、次のクエリがあります。それは、一部の作品

SELECT 
      c.frm_category_id, 
      c.name, 
      c.slug, 
      s.frm_category_id, 
      s.name, 
      s.slug 
FROM 
      frm_categories AS c 
LEFT JOIN(
     SELECT 
       frm_category_id, 
       parent_frm_category_id, 
       name, 
       slug 
     FROM 
       frm_categories 
     WHERE 
       parent_frm_category_id != 0 
) AS s 
     ON 
      c.frm_category_id = s.parent_frm_category_id    
WHERE 
      c.parent_frm_category_id = 0 
ORDER BY 
      c.frm_category_id ASC 

を:私は今、すべてのカテゴリ、サブカテゴリカテゴリなしのものを持つものを取得します。

私は今、追加したい唯一のことは、各SUBCATEGORY

テーブル内のすべてのトピックを数えることである。求め用のトピック

frm_topic_ic、frm_category_id、タイトル

関連する問題