자유게시판

mysql php ] 이 코드는 현재 사분기에서부터 거슬러 올라가면서 데이터를 조회하고, 데이터가 있다면 해당 사분기의 평균을 계산하여 업데이트합니다. 가능한 많은 분기까지 거슬러 올라갑니다.

작성자 정보

  • 삼둡 작성
  • 작성일

컨텐츠 정보

본문

<?php
$servername = "your_mysql_server";
$username = "your_mysql_username";
$password = "your_mysql_password";
$dbname = "your_database_name";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}

$currentQuarter = QUARTER(NOW());

// Iterate over all previous quarters
for ($i = 1; $i <= $currentQuarter; $i++) {
   $quarterToCheck = $currentQuarter - $i;

   // Get the data grouped by herbname and quarter
   $sql = "SELECT uh.herbname, QUARTER(uh.date) as quarter,
                  SUM(uh.price * uh.quantity / uh.weight) as total_cost,
                  COUNT(*) as count
           FROM used_herb uh
           WHERE QUARTER(uh.date) = $quarterToCheck
           GROUP BY uh.herbname, quarter";

   $result = $conn->query($sql);

   if ($result->num_rows > 0) {
       while ($row = $result->fetch_assoc()) {
           $herbName = $row["herbname"];
           $quarter = $row["quarter"];
           $totalCost = $row["total_cost"];
           $count = $row["count"];

           if ($count > 0) {
               $avgCostPerGram = $totalCost / $count;

               // Update the herb table with the calculated average cost per gram for the matching herbname
               $updateSql = "UPDATE herb
                             SET cost_per_gram = $avgCostPerGram
                             WHERE herbname = '$herbName'";
               $conn->query($updateSql);
           }
       }

       echo "Herb table updated successfully for quarter $quarterToCheck.";
       break; // Exit the loop once data for a quarter is found and updated
   }
}

$conn->close();
?>
 

f0136f140ed5a3ab22f17b9a1caf405cfa04b16d2omk.png

 

위의 코드에서 AVG()함수를 쓰지 않고 그 부분은 php로 구현하는 코딩으로 바꾸어주면 좋겠어. 그게 내가 생각하는 방식이거든

 

 

 

 

sum함수도 안쓰고 php에서 해결하면 좋겠어, mysql은 quarter함수만 이용하는 선에서 코딩을 바꾸어줄래?

 

 

위의 sql구분에서 이번 분기가 아닌 전 사분기의 입고 가격을 참조해야하고, 전 사분기의 입고 가격이 없다면 전전 사분기의 입고가격을 조회해야하고 , 이런 부분은 루프로 만들어달라고 아까 말했었어

 

 

이 코드는 현재 분기에서부터 거슬러 올라가면서 데이터를 조회하고, 데이터가 있다면 해당 분기의 평균을 계산하여 업데이트합니다. 가능한 많은 분기까지 거슬러 올라갑니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

인기검색어


최근글


새댓글