테스트 사이트 - 개발 중인 베타 버전입니다

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

예서제이 2년 전 조회 2,274

select wr_10, wr_5, wr_datetime

from {$write_table}

where wr_10 = '사과'

order by wr_datetime desc </p>

<p>

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개까지만 나오게 하고 싶습니다.
오래된 날짜순으로... 

Array

(

    [wr_10] => 사과

    [wr_5] => 5

    [wr_datetime] => 2022-11-15

)

Array

(

    [wr_10] => 사과

    [wr_5] => 4

    [wr_datetime] => 2022-11-14

)

이거나..

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 포인트
2년 전

$sql = "

select wr_10, wr_5, wr_datetime

from {$write_table}

where wr_10 = '사과'

order by wr_datetime desc 

";</p>

<p> </p>

<p>$result = sql_query($sql);</p>

<p> </p>

<p>while ($row = sql_fetch_array($result)) {        </p>

<p>    print_r2($row);    

    

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

            

    if ($sum > 10)

        break;

}

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

답변에 대한 댓글 1개

예서제이
2년 전
답변감사합니다.

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

좀 어려운 query 같네요.

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

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

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

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

답변에 대한 댓글 2개

엑스엠엘
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

참고하세요.
예서제이
2년 전
답변 감사합니다.

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

플래토
2년 전

질문이 좀 이상하네요

'합계'가 10개?

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

와 동일한 내용이라서

 

limit 10;하시면됩니다만

 

조건이 중요하겠죠

wr_10 = '사과' 의

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

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

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

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

 

</p>

<p>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개

예서제이
2년 전
답변 감사드립니다.

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

2년 전

쿼리문을 수정하기 보다는

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

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

답변에 대한 댓글 1개

예서제이
2년 전
답변감사합니다.

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

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

답변에 대한 댓글 1개

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

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

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

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

로그인