2015-11-05 179 views
-3

好吧,我是SQL的绝对初学者,我有一个任务需要解决,而且我卡住了,所以我需要关于如何获得所需结果的想法方面的帮助。从多个表中获取信息的SQL查询

我有2个表 - 第一种是PARENTS,具有下列数据:

ID   Name   Age 
1   John   25 
2   Peter   28 
3   Anny   30 
4   Jack   32 

和第二表是CHILDRENS,具有下列数据:

children_id   parent_id  name   age 
1      1    mary   5 
2      1    Susanne  4 
3      2    stephen  12 
4      4    Kevin   7 

什么SQL命令可以是用于得到如下结果:

id    parent name   number of childrens 
1     John      2 
2     Peter      1 
3     Anny      0 
4     Jack      1 

Thanks in adva NCE!

+1

不要标记不涉及的产品。你使用MySQL和/或MS SQL Server吗? – jarlh

+2

通过GROUP BY和数量(*)进行左加入。 – jarlh

+0

你正在使用哪些DBMS? – Alfabravo

回答

1

尝试这样

select PARENTS.id,PARENTS.name,count(CHILDRENS.name) 
from PARENTS left join CHILDRENS on PARENTS.id=CHILDRENS.parent_id 
group by PARENTS.id,PARENTS.name 
0

正如在评论中提到由Jarlh,使用LEFT OUTER JOIN + Group by

SELECT p.id, 
     p.name, 
     Count(parent_id) as number_of_childrens 
FROM PARENTS p 
     LEFT OUTER JOIN CHILDRENS c 
        ON c.parent_id = p.ID 
Group by p.id, 
     p.name 
0
select p.id, p.name, count(p.id) as number_of_childrens 
from parents p 
left join childrens c 
on p.parent_id = c.parent_id 
group by p.id, p.name 
0
SELECT A.ID 
    , A.name AS parent_name 
    , COUNT(B.children_id) AS number_of_children 
FROM PARENTS AS A 
LEFT JOIN CHILDRENS AS B 
ON A.ID = B.parent_id 
GROUP BY A.ID 
    , A.name 

左连接,通过计数和组。