sql group by 질문 입니다.
본문
이렇게 잘 나오고 있거든요
빨간 부분이 가격이 동일해서 group by 를 시키면 아래처럼 카운트가 맞지 않는데요..
4
3
2
1
이렇게 카운트가 정상적으로 나오게 수정할 방법이 있을까요?
// 실시간 매도 호가
$sql = " select *,sum(sale_qty) as itqty from `g5_shop_trading` where it_id = '".$it_id."' and sale_status = '판매중' group by sale_price order by sale_price desc ";
$result_sale = sql_query($sql);
$sql3 = " select count(*) as cnt from `g5_shop_trading` where it_id = '".$it_id."' and sale_status = '판매중' group by sale_price order by sale_price desc ";
$result_count = sql_fetch($sql3);
$count = $result_count['cnt'];
<?php
for ($i=0; $row=sql_fetch_array($result_sale); $i++) {
$j = $count - $i;
?>
<li>
<div>매도 <?php echo $j ?> 호가</div>
<div><?php echo number_format($row['sale_price']) ?></div>
<div><?php echo number_format($row['itqty']) ?></div>
<div><?php echo number_format($row['itqty'] * $row['sale_price']) ?></div>
</li>
<? } ?>
답변 1
별도로 카운트를 구하지 마시구 sql_num_rows 를 사용면 group by을 하더라도 카운터를
정확하게 알수 있습니다.
select count를 하면 조건에 따라 값이 틀려질수 있기 때문에 row count랑 상이 해질수 있습니다.
$sql = " select *,sum(sale_qty) as itqty from `g5_shop_trading`
where it_id = '".$it_id."' and sale_status = '판매중'
group by sale_price
order by sale_price desc ";
$result_sale = sql_query($sql);
$count = sql_num_rows($result_sale); <-- 요렇게 해서 한번 사용해보세요.
<?php
for ($i=0; $row=sql_fetch_array($result_sale); $i++) {
$j = $count - $i;
?>
<li>
<div>매도 <?php echo $j ?> 호가</div>
<div><?php echo number_format($row['sale_price']) ?></div>
<div><?php echo number_format($row['itqty']) ?></div>
<div><?php echo number_format($row['itqty'] * $row['sale_price']) ?></div>
</li>
<? } ?>
답변을 작성하시기 전에 로그인 해주세요.