1

以下はデータベース内の私のテーブルです。

ここに画像の説明を入力

子供の数に応じて支払いを計算したかったのです。

支払い = 年間 100 ドルとしましょう。子供の数で倍にする必要があります。

子供の数を表示するラベルがあります。さて、これまでに行ったSQLクエリは以下のとおりですが、非常に間違っているように聞こえます。私は今SQLを学んでいます。助けてください。

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

3 に答える 3

2

JOIN2 つのテーブルChildParentおよび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 つのテーブルとを結合して各親の子供の数を計算し、次に他のテーブルと結合して各親の合計金額を計算します。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 に答える