C# 根据孩子的数量计算付款

C# 根据孩子的数量计算付款,c#,asp.net,sql,sql-server,count,C#,Asp.net,Sql,Sql Server,Count,下面是我在数据库中的表 我想根据孩子的数量来计算报酬 假设付款=每年100美元。它应该按孩子的数量数倍 我有一个标签,可以显示孩子的数量。现在,我做的sql查询如下,但我知道它听起来非常错误。我现在正在学习sql。请帮助我 SELECT COUNT(*) FROM Child WHERE ParentId=ParentId JOIN两个表Child、Parent和Payment: WITH CTE AS ( SELECT p.parentId, p.First

下面是我在数据库中的表

我想根据孩子的数量来计算报酬

假设付款=每年100美元。它应该按孩子的数量数倍

我有一个标签,可以显示孩子的数量。现在,我做的sql查询如下,但我知道它听起来非常错误。我现在正在学习sql。请帮助我

SELECT COUNT(*) FROM Child WHERE ParentId=ParentId

JOIN
两个表
Child
Parent
Payment

WITH CTE
AS
(
    SELECT
      p.parentId,
      p.FirstName,
      p.LastName,
      COUNT(c.ChildId) AS NOfChilderen 
    FROM Child  AS c
    INNER JOIN Parent  AS p  ON c.ParentId = p.ParentId
    GROUP BY p.parentId,
             p.FirstName,
             p.LastName
)
SELECT 
  c.parentId,
  c.FirstName,
  c.LastName,
  NOfChilderen * p.PaymentAmount AS TotalAmount
FROM CTE AS C
INNER JOIN Payment AS p ON p.UserId  = p.UserId;

CTE
()将通过连接两个表
parent
child
,来计算每个家长的孩子人数,然后它将连接另一个表
payment
,并计算每个家长的总金额。

在我的脑袋裂了一个小时后。我自己解决了这个问题

<代码>从ChildPrimDe= PAR.PARTEND上的子C内部连接父PART中选择计数(*),其中PAR.USERID= < /P> 谢谢你抽出时间

SELECT PARENT.PARENTID, COUNT(*)*100 AS PAYMENT, COUNT(*) AS NUMBEROFCHILDREN
FROM PARENT LEFT JOIN CHILDREN ON PARENT.PARENNID=CHILDREN.CHILDRENID
GROUP BY PARENT.PARENTID

我使用了左键连接,只要你有没有孩子的父母?

这似乎很复杂。你能把它缩短一点吗?因为我只想在标签中显示该值。@t3es-这将通过将Children的计数乘以
PaymentAmount
列来计算所有家长的总付款。这是真的吗?您想如何计算总付款额?是只需要一个值还是所有行都需要?你能给出一个样本数据和期望的输出吗?了解你想做什么会很有帮助。谢谢:)@t3es-你想为某个特定的父母或所有的父母购买吗?如果要对特定的父级执行此操作,必须像下面这样将
parentId
传递到查询:
选择COUNT(*)FROM Child,其中parentId=@parentId
。如果要对所有家长执行此操作,则必须删除
where
子句,如下所示:
SELECT COUNT(*)FROM Child