MySql Self Join Count

时间:2014-06-22 18:30:50

标签: mysql count group-by self-join

我有一个关于MySQL查询的问题。有两个表,人和已婚。

Persons:
ID
SurName
FirstName 
ID_Father
ID_Mother

Married:
ID
PersonID1
PersonID2
Marriage
Divorce

PersonID1始终为男性,ID2始终为女性。

我的目标是获取一个列表,其中包含FirstName,SurName以及目前或曾与ID = 1的人结婚的所有女性的孩子数。不知何故,我无法将其放在一个Select语句中。

以下是我目前使用的两个陈述。

  

SELECT FirstName,SurName,ID FROM Persons WHERE ID in(SELECT   已结婚。已结婚的人已结婚.PersonID1 = 1);

     

SELECT Persons.ID_Mother as ID,count(Persons.ID_Mother)as   来自人的NoOfChildren来自Persons.ID_Mother;

提前致谢

http://www.directupload.net/file/d/3661/vwqxeg8a_png.htm

1 个答案:

答案 0 :(得分:1)

我认为这个查询可以胜任。

SELECT 
 woman.FirstName, 
 woman.SurName, 
 count(kid.ID) AS kids 
FROM Persons AS woman
INNER JOIN married 
 ON married.PersonID2 = woman.ID
LEFT JOIN Persons AS kid
 ON kid.ID_Mother = woman.ID
WHERE married.PersonID1 = 1
GROUP BY woman.ID