쿼리문 질문드립니다.
본문
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개까지만 나오게 하고 싶습니다.
오래된 날짜순으로...
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
";
$result = sql_query($sql);
while ($row = sql_fetch_array($result)) {
print_r2($row);
$sum = $sum + (int) $row['wr_5'];
if ($sum > 10)
break;
}
select wr_10, wr_5, wr_datetime
from {$write_table}
where wr_10 = '사과'
order by wr_datetime desc limit 10 하면 10개까지 나옵니다.
쿼리문을 수정하기 보다는
질의 결과를 다시 한번 가공하는 방법을 추천드립니다.
질문이 좀 이상하네요
'합계'가 10개?
wr_5의 내용이 10개만 = 레코드가 10개
와 동일한 내용이라서
limit 10;하시면됩니다만
조건이 중요하겠죠
wr_10 = '사과' 의
sum(wr_5) = '10' 인것만 찾으시는거라면
조건만 샘플링으로 구성해봤는데요
sum으로 조건을 먹이기가 애매해서 3개의 컬럼값이 10인 대상이 되는 조건만 추출해봤습니다.
임시테이블로 구성해서 tmp로 테이블을 구성한것이니 무시하시면되고
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
로 표현가능합니다.
!-->좀 어려운 query 같네요.
https://stackoverflow.com/questions/25834382/mysql-each-row-sum
여기서 다시 한번 select 해서 조건문 걸면 될 듯합니다.
최적화한 것은 잘 모르겠네요.
답변을 작성하시기 전에 로그인 해주세요.