New

[SQL] 기록하기

jeonniu 2024. 1. 19. 17:51
<?
function getDbData($table, $where, $data, $con = '')
{
    global $DB_CONNECT_SLAVE;
    $con = $con ? $con : $DB_CONNECT_SLAVE;
    $row = db_fetch_array(getDbSelect($table, getSqlFilter($where), $data, $con));
    return $row;
}
?>

...

<div class="review_area">
    <h2 class="review_tit">실시간 수강후기 <span class="loader"></span></h2>
    <div class="bxslider-default review_roll" data-mode="horizontal" data-auto="false" data-controls="true" data-pager="false" data-delay="2000" style="height:240px">
        <?
        // subject 테이블에서, site_id가 7이고, del_yn이 N이며, use_yn이 Y인 idx를 가지고 와보자.
        // sql문 : select idx from subject where site_id = 7 AND del_yn = 'N' AND use_yn = 'Y';
        $subject_idxs = getDbData($table['subject'], "site_id = 7 AND del_yn = 'N' AND use_yn = 'Y' AND g_id =" . $g_id, "idx");

        // 성공적으로 가지고 왔으면 조건에 맞는 idx 값을 $subject_idxs에 담아준다. 
        if ($subject_idxs) {
            $subject_idxs = $subject_idxs['idx'];
        } else {
            // 그렇지 않다면, 다음과 같이 셋팅 
            $subject_idxs = '89,91,93';
        }

        // 전역변수 선언
        global $_HS;

        //  그냥 .. subject 의 전체 컬럼에 관한 변수화
        $_data = 'c.*';


        // cont 와 subject 의 조건에 일치하는 데이터를 추출할 것임

        // JOIN 절 : 일단 .. cont는 별칭을 c로 두고, gnh_subject를 별칭을 gs로 두고, 두 테이블에서 gs.idx와 c.subject_idxs를 조인한다.

        // WHERE 절 : 검색 조건을 설정한다. 
        // - c.subject_idxs가 위에서 선별한 idxs 값 중 하나와 일치하는 레코드를 선택한다. 
        // - c.site_code가 주어진 값과 일치하는 레코드를 선택한다.
        // -  c.cont_type = '8', c.use_yn = 'Y', c.del_yn = 'N' 이렇게 모두 일치하는 레코드를 선택한다.

        // ORDER BY 절 : 결과는 order_no 기준으로 오름차순 정렬(ASC), 쿼리는 주어진 조건에 따라 cont 테이블과 subject 테이블을 조인하고, 조건에 만족하는 레코드들을 정렬해서 선택하는 것을 목적으로 한다.

        $_table = $table['cont'] . " AS c 
                                JOIN " . $table['subject'] . " AS gs
                                  ON gs.idx = c.subject_idxs
                                WHERE c.subject_idxs IN (" . $subject_idxs . ")
                                  AND c.site_code = '" . $_HS['uid'] . "'
                                  AND c.cont_type = '8'
                                  AND c.use_yn = 'Y'
                                  AND c.del_yn = 'N'";


        $bestReviewList = getDbItems($_table, '', $_data, "ord_no", "ASC", "", "", "");
        // 결과 : cont 테이블의 모든 열을 포함해, 조건에 따라 필터링 되고 오름차순 (ASC) 정렬 된 형태로 반환된다.

        // SQL 문 :
        // select c.* 
        // from cont as c
        // join subject as gs on gs.idx = c.subject_idxs
        // where c.subject_idxs in (89, 91, 93, 95, 97, 99, 101)
        // AND c.cont_type = '8'
        // AND c.use_yn = 'Y'
        // AND c.del_yn = 'N'
        // ORDER BY ord_no ASC;
        ?>

        <ul class="bxslider">
            <? if (count($bestReviewList) > 0) { ?>
                <?
                foreach ($bestReviewList as $key => $review) { ?>
                    <li>
                        <a href="<?= stripslashes($review['cont_url']) ?>" target="_blank">
                            <strong><?= $review['cont_title'] ?></strong>
                            <textarea><?= strip_tags($review['content']) ?></textarea>
                            <span>합격생 <?= $review['writer'] ?></span>
                        </a>
                    </li>
                <? } ?>
            <? } ?>
        </ul>
    </div>

</div>

...

 

 

화이팅 ...........