下面是我在数据库中的表。
我想根据孩子的数量计算付款。
假设付款 = 每年 100 美元。它应该乘以孩子的数量。
我有一个标签,它将显示孩子的数量。现在,我到目前为止所做的 sql 查询如下,但我知道这听起来很错误。我现在正在学习sql。请帮助我。
SELECT COUNT(*) FROM Child WHERE ParentId=ParentId
下面是我在数据库中的表。
我想根据孩子的数量计算付款。
假设付款 = 每年 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
SELECT PARENT.PARENTID, COUNT(*)*100 AS PAYMENT, COUNT(*) AS NUMBEROFCHILDREN
FROM PARENT LEFT JOIN CHILDREN ON PARENT.PARENNID=CHILDREN.CHILDRENID
GROUP BY PARENT.PARENTID
一旦你可以有没有孩子的父母,我就使用左加入?
敲了我的头1小时后。我自己解决了这个问题。
SELECT COUNT(*) FROM Child c INNER JOIN Parent par on c.ParentId = par.ParentId WHERE par.UserId = ?
感谢您的时间。