1

下面是我在数据库中的表。

在此处输入图像描述

我想根据孩子的数量计算付款。

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

我有一个标签,它将显示孩子的数量。现在,我到目前为止所做的 sql 查询如下,但我知道这听起来很错误。我现在正在学习sql。请帮助我。

SELECT COUNT(*) FROM Child WHERE ParentId=ParentId
4

3 回答 3

2

JOIN两个表ChildParentPayment

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)将通过连接两个表和来计算每个父级的子节点数,然后它将与另一个表连接并计算每个父级的总数。Parentchildpayment

于 2013-11-10T09:07:50.370 回答
1
SELECT PARENT.PARENTID, COUNT(*)*100 AS PAYMENT, COUNT(*) AS NUMBEROFCHILDREN
FROM PARENT LEFT JOIN CHILDREN ON PARENT.PARENNID=CHILDREN.CHILDRENID
GROUP BY PARENT.PARENTID

一旦你可以有没有孩子的父母,我就使用左加入?

于 2013-11-11T09:29:27.903 回答
0

敲了我的头1小时后。我自己解决了这个问题。

SELECT COUNT(*) FROM Child c INNER JOIN Parent par on c.ParentId = par.ParentId WHERE par.UserId = ?

感谢您的时间。

于 2013-11-10T12:33:22.557 回答