MySQL检索用户拥有用户结果集的用户数

问题描述:

我有两个用户和父母表。MySQL检索用户拥有用户结果集的用户数

  1. 每个用户都有一个唯一的ID和一个父母ID(这是一个谁引用他到网站)。 root用户的
  2. 父ID为0
  3. 用户具有相同的父ID是该ID的儿童

用户
ID

电子邮件


父母
ID
parentId的
joiningAmount

我希望有一个查询中,我会给ID的父母。

此查询应返回其所有患儿以下信息

ID,姓名,电子邮件,joiningAmount,(没有儿童的这种用户

是否有可能在一个做到这一点查询?
如果不是我应该如何规范化数据库以便在一个查询中完成此操作。
任何帮助,高度赞赏。

编辑:

用户表将包含所有的用户信息

假设这是用户表。

 
id name email 
1 Admin [email protected] 
2 John [email protected] 
3 Larry [email protected] 
4 Jone [email protected] 

注册只能通过推荐进行。
由于管理员没有被任何人转介,他的parentId是0.
假设管理员指的是larry和john(因此他们的父母id是1)并且约翰从他的转介中带来另一个用户,他的名字是他的jone(因此他的父母身份是约翰),那么父母表应该看起来像这样。

现在作为其应用的一部分,连接数量可以忽略。

 
id parentId joinAmount 
1 0  1000 
2 1  1000 
3 1  1000 
4 2  1000 

所以现在我想查询到,如果我通过1(管理员ID)的ID,它应该返回自己的孩子的

 
id, name, email, joiningAmount, (**No of Childrens this user has**) 

2, John, [email protected], 1000, 1(as john has 1 child) 
3, Larry, [email protected], 1000, 0 
+0

是的,可能的。看看'左加入' – 2013-03-26 18:06:50

+0

你可以请提供我的SQL? – 2013-03-26 18:11:23

+0

那两张表,我没有看到关系。 'parents'内的'parentId'有点递归,似乎并不指向'users'表 – 2013-03-26 18:17:58

大厦由Unamata Sanatarai答案,这里的查询:

SELECT users.id, users.name, users.email, users.joiningAmount, 
(SELECT COUNT(*) FROM users AS children WHERE children.parent_id = users.id) AS children_count 
FROM users WHERE users.parent_id = 3 
+0

在查看单个表中的所有字段后,此查询运行良好。 谢谢大家的帮助 – 2013-03-26 19:18:51

我建议把它逼到一个数据库,像这样

users 
- id 
- parent_id 
- name 
- email 
- joiningAmount 

这样,你只有一个数据库,您检索与像查询一切:

SELECT id, name, email, joiningAmount FROM users WHERE parent_id = 3 

假设你不改变表的方式提出(这你应该),那么相应的查询将是:

SELECT users.id, users.name, users.email, parents.joiningAmount, 
    (SELECT COUNT(*) FROM parents P WHERE P.parentId=users.id) 
FROM users,parents 
WHERE users.id=parents.id;