2015-11-05 177 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 

左連接,通過計數和組。