2

以前にこの投稿から必要な最初の結果を取得するために、このクエリがあります。

SELECT parents.tag_id AS ParentID,
       parents.tag_name AS ParentName,
       COUNT(childs.tag_id) AS TotalChildren
FROM root_tags AS parents
    LEFT OUTER JOIN root_tags AS childs
        ON parents.tag_id = childs.parent_id
WHERE parents.parent_id IS NULL
GROUP BY parents.tag_id, parents.tag_name
ORDER BY parents.tag_id

どちらが戻るか、

ParentID    ParentName  TotalChildren
3           Tagname-1   2
5           tagname-2   2
6           tagname-3   1
9           tagname-4   1
18          tagname-10  0
24          tagname-13  0
26          tagname-14  0
28          tagname-15  0

しかし、子供がまったくいない親を返還したいので、今は別の問題があります。

ParentID    ParentName  TotalChildren
18          tagname-10  0
24          tagname-13  0
26          tagname-14  0
28          tagname-15  0

だから私はこれにクエリを作成しようとしました、

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

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

WHERE parents.parent_id IS NULL
AND COUNT(childs.tag_id) = '0'
GROUP BY parents.tag_id, parents.tag_name
ORDER BY parents.tag_id

しかし、それはエラーを返します#1111 - Invalid use of group function

どうすれば修正できますか?

4

3 に答える 3

2

HAVING元のクエリに句を追加するだけです。

SELECT parents.tag_id AS ParentID,
       parents.tag_name AS ParentName,
       COUNT(childs.tag_id) AS TotalChildren
FROM root_tags AS parents
    LEFT OUTER JOIN root_tags AS childs
        ON parents.tag_id = childs.parent_id
WHERE parents.parent_id IS NULL
GROUP BY parents.tag_id, parents.tag_name
HAVING COUNT(childs.tag_id) = 0
ORDER BY parents.tag_id

WHEREあなたの問題は、集約と関数()で句を使おうとしたことですCOUNT。ただし、を使用して、集計WHEREにデータをフィルタリングする必要があります。集計後に結果をフィルタリングするためのものです。HAVING

于 2011-08-04T16:26:31.073 に答える
1

この部分を変更します

AND COUNT(childs.tag_id) = '0'
GROUP BY parents.tag_id, parents.tag_name

GROUP BY parents.tag_id, parents.tag_name
HAVING COUNT(childs.tag_id) = 0
于 2011-08-04T16:27:00.977 に答える
0

WHEREの代わりにHAVINGを使用し、GROUPBYの後に

http://blog.cnizz.com/tag/mysql-error-1111/

これは便利かもしれません。

于 2011-08-04T16:35:30.910 に答える