쿼리문 질문드립니다. 채택완료
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개
$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개
댓글을 작성하려면 로그인이 필요합니다.
좀 어려운 query 같네요.
https://stackoverflow.com/questions/25834382/mysql-each-row-sum
여기서 다시 한번 select 해서 조건문 걸면 될 듯합니다.
최적화한 것은 잘 모르겠네요.
답변에 대한 댓글 2개
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로 테이블을 구성한것이니 무시하시면되고
</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개
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인