以下はデータベース内の私のテーブルです。
子供の数に応じて支払いを計算したかったのです。
支払い = 年間 100 ドルとしましょう。子供の数で倍にする必要があります。
子供の数を表示するラベルがあります。さて、これまでに行ったSQLクエリは以下のとおりですが、非常に間違っているように聞こえます。私は今SQLを学んでいます。助けてください。
SELECT COUNT(*) FROM Child WHERE ParentId=ParentId
以下はデータベース内の私のテーブルです。
子供の数に応じて支払いを計算したかったのです。
支払い = 年間 100 ドルとしましょう。子供の数で倍にする必要があります。
子供の数を表示するラベルがあります。さて、これまでに行ったSQLクエリは以下のとおりですが、非常に間違っているように聞こえます。私は今SQLを学んでいます。助けてください。
SELECT COUNT(*) FROM Child WHERE ParentId=ParentId
JOIN
2 つのテーブル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
)は、2 つのテーブルとを結合して各親の子供の数を計算し、次に他のテーブルと結合して各親の合計金額を計算します。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 = ?
お時間をいただきありがとうございます。