是我在数据库中的表格。
我想根据孩子的数量来计算付款。
假设付款=每年100美元。它应该按孩子数量计算。
我有一个标签,显示孩子的数量。现在,我做的sql查询到目前为止,但我知道这听起来非常错误。我现在正在学习SQL。请帮助我。
SELECT COUNT(*) FROM Child WHERE ParentId=ParentId
答案 0 :(得分:2)
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
(Common table expression)会通过加入两个表格Parent
和child
来计算每个家长的孩子的数量,然后它会与另一个表格一起加入payment
并计算每位家长的总金额。
答案 1 :(得分: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
我可以在父母没有孩子的情况下立即使用左连接吗?
答案 2 :(得分:0)
头部裂开1小时后。我自己解决了这个问题。
SELECT COUNT(*) FROM Child c INNER JOIN Parent par on c.ParentId = par.ParentId WHERE par.UserId = ?
感谢您的时间。