특정 컬럼의 값 중 제일 큰 값을 중심으로 다른 컬럼들의 값 출력

특정 컬럼의 값 중 제일 큰 값을 중심으로 다른 컬럼들의 값 출력

QA

특정 컬럼의 값 중 제일 큰 값을 중심으로 다른 컬럼들의 값 출력

답변 3

본문

안녕하세요.

 

출력 할려는 값의 조건은

1. php mysql에 있는 로그인 된 id 값

2. 오늘부터 30일 전까지의 mb_point 컬럼의 값 중 5 보다 큰 숫자 중 제일 큰 값으로 가장 최근의 값

3. 2번의 값을 중심으로 컬럼 product_a, product_b, used_minutes의 값을 가져와 html 테이블이 출력

4. 만약 a 컬럼의 값이 모두 5 이하일 경우 product_a는 '선택함', product_b는 '선택하지 않음', used_minutes는 '계속 사용함' 로 출력

 

이렇게 출력할려고 합니다.

 

그런데 잘 안되네요.

여러가지 방법을 해 보았는데...

이 방법이 제일 비슷하게 한 것 같은데 역시나 출력이 안되네요. ㅠㅠ

 

특히, 조건 4 번인 것은 어떻게 해야 하는지도 모르겠네요. ㅠㅠ

 

고수님들의 감사한 조언 부탁드립니다.

 


<table class="hdrf-a02">
    <tr>
        <th class="hdrf-a01">a 조건</th>
        <th class="hdrf-a01">b 조건</th>
        <th class="hdrf-a01">지속성</th>
    </tr>
        <?php
        $today = date('Y-m-d');
        $ninetyDaysAgo = date('Y-m-d', strtotime('-90 days'));
        $mb_id = $member['mb_id'];
        $sql = "SELECT mb_date, product_a, product_b, used_minutes, mb_point 
        FROM g5_member_prodcut 
        WHERE mb_id = ? mb_point > 5 AND mb_point <= (SELECT MAX(mb_point) FROM g5_member_prodcut WHERE mb_date BETWEEN '$ninetyDaysAgo' AND '$today')";
        $result = $conn->query($sql);
        if ($result->num_rows > 0) {
          while ($row = $result->fetch_assoc()) {
              echo "<tr>";
              echo "<td class='hdrf-a02'>" . $row['product_a'] . "</td>";
              echo "<td class='hdrf-a02'>" . $row['product_b'] . "</td>";
              echo "<td class='hdrf-a02'>" . $row['used_minutes'] . "</td>";
              echo "</tr>";
          }
      } 
        
         else {
             echo "<tr><td colspan='3'>No results found</td></tr>";
      }
        ?>
</table>

 

이 질문에 댓글 쓰기 :

답변 3

1. php mysql에 있는 로그인 된 id 값

== 로그인한 회원 일까요

 

2. 오늘부터 30일 전까지의 mb_point 컬럼의 값 중 5 보다 큰 숫자 중 제일 큰 값으로 가장 최근의 값

== 어떤 테이블에 있는 mb_point 인가요

g5_member.mb_point에는 날짜 정보가 없습니다.

 

 

 

SELECT mb_date, product_a, product_b, used_minutes, mb_point
      FROM g5_member_prodcut
        WHERE mb_id = ?
And mb_point > 5
AND mb_date >= '$ninetyDaysAgo'

4.만약 a 컬럼의 값이 모두 5 이하일 경우 product_a는 '선택함', product_b는 '선택하지 않음', used_minutes는 '계속 사용함' 로 출력
=
a 컬럼이 무엇인가요?
5 이상이면 어떻게 하나요?

while ($row = $result->fetch_assoc()) {
if( $row[] <=5)
Echo"product_a는 '선택함', product_b는 '선택하지 않음', used_minutes는 '계속 사용함' 로 출력";
Else {
              echo "<tr>";
              echo "<td class='hdrf-a02'>" . $row['product_a'] . "</td>";
              echo "<td class='hdrf-a02'>" . $row['product_b'] . "</td>";
              echo "<td class='hdrf-a02'>" . $row['used_minutes'] . "</td>";
              echo "</tr>";
}

if문 쓰세요

if( $row['컬럼명'] <= 5 && $row['컬럼명'] <= 5 && $row['컬럼명'] <= 5 ){
  $row['product_a'] = '선택함';

  $row['product_b'] = '선택하지않음';

  $row['product_c'] = '선택하지않음';
}

 

이부분을 while문 위에 추가

조건을 하나씩 보시고 출력할때 배열을 다시 정의해서 다시넣는 방법을 해보세요.

1~3번까지는 where  절과 order by 를 통해 정렬하고 

순서대로 출력하면서 

배열을 다시 만들어 조건에 담아 넣는 방식을 쓰면 해결될거 같아요

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,102
© SIRSOFT
현재 페이지 제일 처음으로