Taras_Serevann
@Taras_Serevann
веб-разработчик, автор

Как реализовать такое на SQL?

Есть следующая структура таблицы:
7010f93258fb4c64b7e086df30fbf075.png
Есть следующий код:
/ позбатомися о том, чтобы не было не было ответов с заминусованым рейтингом
    $answers = $wpdb->get_results("SELECT DISTINCT `expert_id` FROM texperts_answers", ARRAY_A);
 
    // пройдем по каждому ответу
    foreach($answers as $i => $answer)
    {
        // получим его рейтинг
        $rating = $wpdb->get_var("SELECT SUM(`rating`) FROM texperts_answers WHERE `expert_id` = " . $answer['expert_id']);
 
        // если рейтинг меньше 0, то делаем его раным 0
        if ($rating < 0) {
            $wpdb->query("DELETE FROM texperts_answers WHERE `expert_id` =  ". $answer['expert_id']);
        }
    }

Как реализовать такое же, но в рамках SQL, без использования PHP?
  • Вопрос задан
  • 813 просмотров
Решения вопроса 2
@res2001
Developer, ex-admin
Как-то так:
delete from texperts_answers 
where `expert_id` in (SELECT `expert_id` FROM texperts_answers 
group by `expert_id`
having SUM(`rating`)<0)
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
DELETE FROM texperts_answers WHERE `expert_id` IN( SELECT expert_id from 
texperts_answers GROUP BY expert_id HAVING SUM('rating')<0)

Примерно так. Но думаю можно и красивее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы