테스트 사이트 - 개발 중인 베타 버전입니다

컬럼의 값이 특정 개수 이상인 게시물들의 합을 구하고 싶습니다. 채택완료

2년 전 조회 1,879

안녕하세요~

계속 생각해봐도 제 잛은 지식으로 답이 안나와서 질문드립니다.ㅠㅠ

 

while 문으로 count 해서 값이 나온 결과물의 값이 n개 이상인 결과의 수를 구할 수 있는 방법이 있을까요?

 

</strong></p>

<p><? 

    $sql = " select wr_subject from 테이블A where wr_datetime like '2022-01%' and wr_17 = '사과' order by wr_datetime asc limit 100";

    $result = sql_query($sql);    

    

    while($row = sql_fetch_array($result)) {        

?>    

<?

    $f_subject = $row['wr_subject'];    

    

    $a_sql = "SELECT COUNT(wr_subject) as cnt FROM 테이블B WHERE wr_subject = '$f_subject' and wr_datetime < '2022-01-31 23:59:59' group by wr_subject having COUNT(wr_subject) > 2 ";

    $row = sql_fetch($a_sql);

    $same_count = $row[cnt];

?>   

    <tr>

        <td> </td>

        <td><? echo $f_subject ?></td>

        <td><? echo $same_count ?></td>

    </tr>

<? } ?></p>

<p>

위와 같은 코드를 짰는데요. 실행을 하면 결과 값이

 

서울 

인천

경기도 4

강원도 10

부산 5

 

같이 위처럼 출력이 되는데요.

 

5개의 데이터 중 [값이 2이상]인 결과값이 있는 데이터가 3개니까

----------------------

값: 3

----------------------

을 출력하는 방법을 알고 싶은데 도저히 생각이 안나서요. 혹시 방법이 있을까요?~ㅠㅠ

 

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

답변 2개

채택된 답변
+20 포인트

</p>

<p><?

    $sql = "SELECT wr_subject FROM 테이블A WHERE wr_datetime LIKE '2022-01%' AND wr_17 = '사과' ORDER BY wr_datetime ASC LIMIT 100";

    $result = sql_query($sql);

    

    $total_count = 0; // Variable to store the total count

    

    while($row = sql_fetch_array($result)) {        

    

        $f_subject = $row['wr_subject'];    

        

        $a_sql = "SELECT COUNT(wr_subject) AS cnt FROM 테이블B WHERE wr_subject = '$f_subject' AND wr_datetime < '2022-01-31 23:59:59' GROUP BY wr_subject HAVING COUNT(wr_subject) > 2 ";

        $row = sql_fetch($a_sql);

        $same_count = $row['cnt'];

        

        if ($same_count > 2) {

            $total_count++; // Increment the total count if same_count is greater than 2

        }

?>   

        <tr>

            <td> </td>

            <td><? echo $f_subject ?></td>

            <td><? echo $same_count ?></td>

        </tr>

<? } ?></p>

<p>----------------------

값: <? echo $total_count ?>

----------------------</p>

<p>

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

답변에 대한 댓글 1개

헐 잘 됩니다. 너무너무너무 감사합니다.ㅠㅠㅠ

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

$same_count = $row[cnt];

//추가

if( $same_count <=2) continue;

?>   

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

답변에 대한 댓글 1개

둘째 SQL 날짜 조건이 좀 이상해 보이는데
일단 넘어가고

SELECT b.wr_duject, COUNT(*) AS cnt FROM
테이블B b inner join 테이블A a
on b.wr_subject=a.subject
And a.wr_datetime >='2022-01-01'
And a.wr_datetime <='2022-01-31 23:59:59'
AND a.wr_17 = '사과'
Where b.wr_datetime < '2022-01-31 23:59:59'
GROUP BY b.wr_subject HAVING cnt > 2

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

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

로그인

전체 질문 목록

🐛 버그신고