2016-02-11 22 views
0

我有以下運行php-cron作爲php腳本。我想知道是否有一種可能性,我可以在一次MySQL查詢中做同樣的事情?MySQL將PHP cron作業SQL組合成一個查詢可能嗎?

$sql = "SELECT COUNT(`user_to`) AS fav_count , user_to FROM `users_favorite` WHERE 1 GROUP BY `user_to` "; 
$result = mysql_query($sql, $db) or die("Error in query:" . mysql_error()); 
while ($row = mysql_fetch_array($result)) { 
    $fav_count = $row['fav_count']; 
    $user_id = $row['user_to']; 
    $sql1 = "UPDATE user SET fav_count='" . $fav_count . "' 
        WHERE user_id=" . $user_id . " "; 
    $result1 = mysql_query($sql1, $db) or die("Error in query:" . mysql_error()); 
} 
+1

這當然是可能的,但它需要工作。確保儘快發佈解決方案。 – nottinhill

回答

2

您可以使用一個updatejoin此:

UPDATE user u JOIN 
     (SELECT COUNT(`user_to`) AS fav_count, user_to 
     FROM `users_favorite` 
     GROUP BY `user_to` 
     ) uf 
     ON uf.user_to = u.user_id 
    set u.fav_count = uf.fav_count; 

你可能要考慮一個觸發器,以保持在彙總表的計數,如果你想讓它保持了-TO-日期。但是,這將是您的系統的這個組件的重新設計。