3
SELECT 문의 결과가 VIEW 내부 SELECT의 결과와 다릅니다. 문제를 수정하고 동일한 결과를보기에서 얻는 방법?SELECT와 다른 결과 및 내부에서보기
조치는 테이블 :
+--+---------+--------------+-----------+------+
|id|person_id|action_type_id|currency_id|sum |
+--+---------+--------------+-----------+------+
|1 |1 |1 |1 | 1.00 |
|2 |1 |1 |1 | 5.00 |
|3 |1 |1 |2 |10.00 |
|4 |1 |2 |1 | 2.00 |
|5 |2 |1 |1 |20.00 |
|6 |2 |2 |2 | 5.00 |
+--+---------+--------------+-----------+------+
선택 :
SELECT person_id AS p, currency_id AS c,
(
CAST(
COALESCE(
(SELECT SUM(sum) FROM actions WHERE action_type_id=1 AND person_id=p AND currency_id=c)
, 0)
AS DECIMAL(11,2)) -
CAST(
COALESCE(
(SELECT SUM(sum) FROM actions WHERE action_type_id=2 AND person_id=p AND currency_id=c)
, 0)
AS DECIMAL(11,2))
) AS sum
FROM actions
GROUP BY currency_id, person_id
ORDER BY person_id, currency_id;
결과 :
CREATE VIEW p_sums AS
SELECT person_id AS p, currency_id AS c,
(
CAST(
COALESCE(
(SELECT SUM(sum) FROM actions WHERE action_type_id=1 AND person_id=p AND currency_id=c)
, 0)
AS DECIMAL(11,2)) -
CAST(
COALESCE(
(SELECT SUM(sum) FROM actions WHERE action_type_id=2 AND person_id=p AND currency_id=c)
, 0)
AS DECIMAL(11,2))
) AS sum
FROM actions
GROUP BY currency_id, person_id
ORDER BY person_id, currency_id;
SELECT * FROM p_sums;
,369 :
+--+--+------+
|p |c |sum |
+--+--+------+
|1 |1 | 4.00 |
|1 |2 |10.00 |
|2 |1 |20.00 |
|2 |2 |-5.00 |
+--+--+------+
하는 내부보기를 선택
결과 :
+--+--+------+
|p |c |sum |
+--+--+------+
|1 |1 |29.00 |
|1 |2 |29.00 |
|2 |1 |29.00 |
|2 |2 |29.00 |
+--+--+------+
사용중인 mysql의 버전은 무엇입니까? – Jason
초보자를위한 (나도 마찬가지였다.) 누군가가 솔루션을 제공하는 데 도움을 줄 때, 그것은 당신을 그루터기 너머로 데려다 줄 것이다. 즉, 대답에 따라 체크 박스를 클릭하여 다른 사람들이 솔루션이 이미 해결되었습니다. – DRapp
나는 대답을 받아 들일 수 있기 전에 나는 그렇게했다. 그러나 그것은 내가 60 초 기다려야한다. – happytoad