2011-08-04 10 views
1

私はこの問題から正しい答えを得た後にさらにpostを追加する必要があります。これは、タグをページにタグ付けする必要があるかどうかを確認する必要があります。sql query:親タグと子タグをタグ付きテーブルでフィルタリングする方法は?

これは私のroot_mm_tagged_pages table

tag id pg_id 
3  11 
5  11 
6  11 
18  12 
24  13 
26  13 
3  14 

だから私はこの結果を返すようにしたい、

ParentID ParentName TotalChildren TotalTagged 
3   Tagname-1 2    2 
5   tagname-2 2    1 
6   tagname-3 1    1 
18   tagname-10 0    1 
24   tagname-13 0    1 
26   tagname-14 0    1 

私はこのクエリを使用してみましたが、私はエラーを取得 - #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT(tagged.pg_id) AS TotalTagged FROM root_tags AS parents LEFT OUTER JOI' at line 5を、

SELECT 
    parents.tag_id AS ParentID, 
    parents.tag_name AS ParentName, 
    COUNT(childs.tag_id) AS TotalChildren 
    COUNT(tagged.pg_id) AS TotalTagged 

FROM root_tags AS parents 
    LEFT OUTER JOIN root_tags AS childs 
    ON parents.tag_id = childs.parent_id 

    LEFT OUTER JOIN root_mm_tagged_pages AS tagged 
    ON tagged.tag_id = parents.tag_id 

WHERE parents.parent_id IS NULL 
GROUP BY parents.tag_id, parents.tag_name 
ORDER BY parents.tag_id 

それを修正し、結果をさらにフィルタリングするにはどうすればよいですか?

答えて

3

TotalChildrenエイリアスの後にコンマがありません。

SELECT 
    parents.tag_id AS ParentID, 
    parents.tag_name AS ParentName, 
    COUNT(childs.tag_id) AS TotalChildren , --You missed the comma here 
    COUNT(tagged.pg_id) AS TotalTagged 
FROM root_tags AS parents 
    LEFT OUTER JOIN root_tags AS childs 
    ON parents.tag_id = childs.parent_id 

    LEFT OUTER JOIN root_mm_tagged_pages AS tagged 
    ON tagged.tag_id = parents.tag_id 

WHERE parents.parent_id IS NULL 
GROUP BY parents.tag_id, parents.tag_name 
ORDER BY parents.tag_id 
+0

a ...私の間違い!それを見つけてくれてありがとう! :-) – laukok

+0

@lauthiamkok:ここ1年間、212の質問を投稿しました。多くの場合、1日に数回あります。そのほとんどは、このような愚かなタイプミスを見つけようとしています。他の人にヘルプを依頼する前に、コードのデバッグに費やす時間を増やすことを提案できますか?これは簡単です! :) –