mysql php ] 이 코드는 현재 사분기에서부터 거슬러 올라가면서 데이터를 조회하고, 데이터가 있다면 해당 사분기의 평균을 계산하여 업데이트합니다. 가능한 많은 분기까지 거슬러 올라갑니다.
작성자 정보
- 삼둡 작성
- 작성일
컨텐츠 정보
- 3,691 조회
- 
					
					
					
					
						
						목록
					
											
본문
<?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();
?>
 

위의 코드에서 AVG()함수를 쓰지 않고 그 부분은 php로 구현하는 코딩으로 바꾸어주면 좋겠어. 그게 내가 생각하는 방식이거든
sum함수도 안쓰고 php에서 해결하면 좋겠어, mysql은 quarter함수만 이용하는 선에서 코딩을 바꾸어줄래?
위의 sql구분에서 이번 분기가 아닌 전 사분기의 입고 가격을 참조해야하고, 전 사분기의 입고 가격이 없다면 전전 사분기의 입고가격을 조회해야하고 , 이런 부분은 루프로 만들어달라고 아까 말했었어
이 코드는 현재 분기에서부터 거슬러 올라가면서 데이터를 조회하고, 데이터가 있다면 해당 분기의 평균을 계산하여 업데이트합니다. 가능한 많은 분기까지 거슬러 올라갑니다.
관련자료
- 
			이전
- 
			다음
 
								 
                         
                        
                    