2026, 새로운 도약을 시작합니다.

쿼리문 질문드립니다. 채택완료

Copy
select wr_10, wr_5, wr_datetime

from {$write_table}

where wr_10 = '사과'

order by wr_datetime desc 



Array

(

    [wr_10] => 사과

    [wr_5] => 5

    [wr_datetime] => 2022-11-19

)

Array

(

    [wr_10] => 사과

    [wr_5] => 3

    [wr_datetime] => 2022-11-18

)

Array

(

    [wr_10] => 사과

    [wr_5] => 8

    [wr_datetime] => 2022-11-17

)

Array

(

    [wr_10] => 사과

    [wr_5] => 2

    [wr_datetime] => 2022-11-16

)

Array

(

    [wr_10] => 사과

    [wr_5] => 5

    [wr_datetime] => 2022-11-15

)

Array

(

    [wr_10] => 사과

    [wr_5] => 4

    [wr_datetime] => 2022-11-14

)


일때...

wr_5의 합계가 10개까지만 나오게 하고 싶습니다.
오래된 날짜순으로... 

Copy
Array

(

    [wr_10] => 사과

    [wr_5] => 5

    [wr_datetime] => 2022-11-15

)

Array

(

    [wr_10] => 사과

    [wr_5] => 4

    [wr_datetime] => 2022-11-14

)

이거나..

Copy
Array

(

    [wr_10] => 사과

    [wr_5] => 2

    [wr_datetime] => 2022-11-16

)

Array

(

    [wr_10] => 사과

    [wr_5] => 5

    [wr_datetime] => 2022-11-15

)

Array

(

    [wr_10] => 사과

    [wr_5] => 4

    [wr_datetime] => 2022-11-14

)

이렇게 나오게 할려면 쿼리문을 어떻게 수정해야 하나요?

답변 5개

채택된 답변
+20 포인트
Copy
$sql = "

select wr_10, wr_5, wr_datetime

from {$write_table}

where wr_10 = '사과'

order by wr_datetime desc 

";

 

$result = sql_query($sql);

 

while ($row = sql_fetch_array($result)) {        

    print_r2($row);    

    

    $sum = $sum + (int) $row['wr_5'];

            

    if ($sum > 10)

        break;

}
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

좀 어려운 query 같네요.

https://stackoverflow.com/questions/25834382/mysql-each-row-sum

여기서 다시 한번 select 해서 조건문 걸면 될 듯합니다.

최적화한 것은 잘 모르겠네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

https://www.tutorialspoint.com/how-to-create-a-cumulative-sum-column-in-mysql#:~:text=To%20create%20a%20cumulative%20sum%20column%20in%20MySQL%2C%20you%20need,by%20step%20with%20current%20value.

https://stackoverflow.com/questions/2563918/create-a-cumulative-sum-column-in-mysql

참고하세요.
답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

질문이 좀 이상하네요

'합계'가 10개?

wr_5의 내용이 10개만  = 레코드가 10개 

와 동일한 내용이라서

limit 10;하시면됩니다만

조건이 중요하겠죠

wr_10 = '사과' 의

sum(wr_5) = '10' 인것만 찾으시는거라면

조건만 샘플링으로 구성해봤는데요

sum으로 조건을 먹이기가 애매해서 3개의 컬럼값이 10인 대상이 되는 조건만 추출해봤습니다.

임시테이블로 구성해서 tmp로 테이블을 구성한것이니 무시하시면되고

Copy


SELECT a.no ano, a.wr_5 awr5,b.no bno, b.wr_5 bwr5, c.no cno, c.wr_5 cwr5

 FROM tmp a, tmp b, tmp c

WHERE a.no  b.no

AND a.no  c.no

AND b.no  c.no

AND (a.wr_5+b.wr_5+c.wr_5) = 10

AND a.wr_10 = '사과'

AND b.wr_10 = a.wr_10

AND c.wr_10 = a.wr_10

ORDER BY a.wr_datetime DESC, b.wr_datetime DESC, c.wr_datetime DESC

LIMIT 10

로 표현가능합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

쿼리문을 수정하기 보다는

질의 결과를 다시 한번 가공하는 방법을 추천드립니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

select wr_10, wr_5, wr_datetime
from {$write_table}
where wr_10 = '사과'
order by wr_datetime desc limit 10 하면 10개까지 나옵니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

row 개수 10개가 아닌...
wr_5를 더한 값이 10까지 나오게 하고 싶습니다.

가장 오래된 날짜로부터 wr_5의 값이 10이 될때까지 더해서 10이 되면 더 이상 출력 안되게....

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고