我正在使用一个递归表,我正在尝试构建一个查询来获取我的子节点计数,但是当我通过 basic_user_id
限制它时,我的查询无法返回正确的计数。
设计背后的想法是让不同的用户拥有自己的公司层次结构,但是我不能让它们相互冲突,这似乎正在发生。
我的查询
select * , count(c2.company_id )
from company_user c1 left join company_user c2 on c2.parent_id = c1.company_id
where c1.company_id in (1337)
and c1.basic_user_id = 23
group by c1.company_id;
basic_user_id = 23
应该正确返回 1 的计数
现在,当我将 basic_user_id
更改为 541 时,我希望它返回 0,但它似乎仍返回 1。
如何让 basic_user_id = 541
返回计数 0 和 basic_user_id = 23
返回计数 1?
最佳答案
你能试试这个吗?你可以在这里测试。 http://www.sqlfiddle.com/#!2/73f61/2
我添加了 AND child_tab.basic_user_id = parent_tab.basic_user_id
ON 子句。因为你正在做 LEFT JOIN
SELECT parent_tab.company_id, COUNT(child_tab.company_id)
FROM company_user parent_tab LEFT JOIN company_user child_tab
ON child_tab.parent_id = parent_tab.company_id
AND child_tab.basic_user_id = parent_tab.basic_user_id
WHERE parent_tab.company_id IN (1337)
AND parent_tab.basic_user_id = 23
GROUP BY parent_tab.company_id;
关于mysql - 从mysql查询获取子节点数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544559/