Witam, postaram się krótko opisać problem, a mianowicie: Mam stronę na której jest powiedzmy około 1000 profili. Każdy z profili ma swoje komentarze z różną datą. To co chciałbym zrobił to napisać kod, który pobrałby mi z każdego profilu 3 ostatnie komentarze, ale tylko takie, których ostatni komentarz nie przekracza daty 2016 roku, a te profile, które mają komentarze z powiedzmy 2017 to je omija, a tamtym dodać + 6 miesięcy powiedzmy tym:
UPDATE `sktest`.`wp_comment` SET `time` = DATE_ADD(`time`, INTERVAL 6 MONTH) WHERE date(`wp_comment`.`time`) BETWEEN "2015-05-01" AND "2016-06-01"
Niestety nie mam pojęcia jak się za to zabrać. Jak z każdego profilu pobrać 3 ostanie komentarze? Ma ktoś może jakąś propozycje? Pomysł?
Komentarze trzymam w tabeli wp_comment, która wygląda tak:
Kolumna whom to ID profilu użytkownika (w wp_users).
EDIT
Dzięki pomocy @skolukmar udało się wyciągąć 3 ostatnie komentarze ze wszystkich profili.
$wyciagamy_infor=$wpdb->get_results('SELECT a.*, count(*) as row_number FROM wp_comment a JOIN wp_commment b ON a.whom = b.whom AND a.id <= b.id GROUP BY a.whom, a.id ORDER BY a.whom ASC');
foreach ($wyciagamy_infor as $wyciagamy_info_resr) {
$id = $wyciagamy_info_resr->id;
$active = $wyciagamy_info_resr->whom;
$time = $wyciagamy_info_resr->time;
$row_num = $wyciagamy_info_resr->row_number;
if ($row_num>3) {
continue;
}
$sqll2 ='UPDATE `sktest`.`wp_comment` SET `time` = DATE_ADD(`time`, INTERVAL 6 MONTH) WHERE `whom`="'.$active.'" AND `id`="'.$id.'"';
$wpdb->query($sqll2);
}