14 Ben yorumunda açıklandığı gibi beklenen çıkışı yanlış olduğunu düşünüyorum kendi üst eklenecektir. 14
için, sumtotal
1100
olmalıdır.
Bu şekilde alabilirsiniz.
SELECT m.id,
m.amount,
CASE
WHEN n.pid IS NULL THEN m.amount
ELSE n.sum_amount+m.amount
END AS total_amount,
m.is_sub,
m.pid
FROM product m
LEFT JOIN
(SELECT sum(p.amount) AS sum_amount,
p.pid
FROM product p
INNER JOIN product c ON p.pid=c.id
GROUP BY p.pid
) n
ON m.id=n.pid
ORDER BY m.id
Açıklama
İç tablo n
bu çıktıyı verecektir.
+------------+-----+
| SUM_AMOUNT | PID |
+------------+-----+
| 700 | 14 |
+------------+-----+
Sen çıkışı altına almak için product
masaya ile katılabilir. Yapmanız çalıştığımız şey
+-----+---------+---------------+---------+-----+
| ID | AMOUNT | TOTAL_AMOUNT | IS_SUB | PID |
+-----+---------+---------------+---------+-----+
| 12 | 200 | 200 | 1 | 14 |
| 13 | 300 | 300 | 0 | |
| 14 | 400 | 1100 | 0 | |
| 15 | 500 | 500 | 1 | 14 |
+-----+---------+---------------+---------+-----+
? Ve beklenen sonuç nedir (bu örnek verilerle)? – jarlh
senin toplamı sizin beklediğiniz çıkışı nedir, bir grup yok mu? –
Güncellemeye dikkat edin. plz – codeBloger