sql join 관련 질문 입니다. 채택완료

조인을 해서 뽑고 있는데 페이징이 안나와서요.

어디가 잘못된걸까요?

목록 데이터는 정상적으로 잘 나오는데 카운트가 왜 1이 나오는지 모르겟네요.

$total_count = $row['cnt']; 이 값이 1로 찍히네요 실제 목록데이터는 최소 수백개 인데요..

Copy
$sql_common = " from tbl_nft a inner join `tbl_nft_file` b on a.no = b.no where a.is_copied_to_market = '1' and substr(b.reg_date, 1, 10) <= '2022-09-14' ";

 

if (!$sst) {
    $sst = "a.no";
    $sod = "desc";
}

$sql_order = " group by a.no order by {$sst} {$sod} ";

$sql = " select count(*) as cnt {$sql_common} {$sql_order} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];

$rows = 5;
$total_page  = ceil($total_count / $rows);  // 전체 페이지 계산
if ($page < 1) $page = 1; // 페이지가 없으면 첫 페이지 (1 페이지)
$from_record = ($page - 1) * $rows; // 시작 열을 구함

답변 4개

채택된 답변
+20 포인트

전체 갯수를 구할 때는

Group by나 order by를 빼세요

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

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

group by를 사용할 경우

$row = sql_query($sql)

$total_count = $row->num_rows

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

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

inner join 은 모든 조건이 맞아야 데이터가 나오는 겁니다.

1889856443_1670277583.8749.png

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

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

sql_fetch_array 로 변경해보세요.
로그인 후 평가할 수 있습니다

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

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

로그인
🐛 버그신고