Избыточная выборка на PHP

#php #mysqli

#php #mysqli

Вопрос:

Я хочу повторить идентификатор candidate_id, который соответствует в моем запросе, но проблема в том, что идентификатор candidate_id является избыточным. Пожалуйста, помогите мне решить эту проблему. Спасибо!

 //The result of $select1:
5
5
6

Note: the rows must be 3 rows that's why the $select2 is must be 3rows only and not a redundant
//The result of $select2:
190220015443 
190220015600 
190220015443 
190220015600 
190220072659 

//Must be the output of $select2:
190220072659 
190220015443 
190220015600 



<?php 
$quarter = '1st';
$year = '2019';
$select1 = mysqli_query($db, "SELECT MAX(number_votes) FROM inter_department_votes WHERE quarter = '$quarter' AND year_date = '$year' AND number_votes != 0 AND status = '1' GROUP BY dept_id");

    while ($row1 = mysqli_fetch_array($select1)) {
        $number_votes1 = $row1['MAX(number_votes)'];

        $select2 = mysqli_query($db, "SELECT candidate_id, dept_id FROM inter_department_votes WHERE number_votes = '$number_votes1'");

        while ($row2 = mysqli_fetch_array($select2)) {
            $candidate_id2 = $row2['candidate_id'];
            echo $candidate_id2 . " " . "<br />";
        }
    }

     ?>
  

PS. Я пытаюсь сгруппировать по запросу, но результат тот же. Пожалуйста, помогите мне решить эту проблему:-((((

Комментарии:

1. Вы пробовали группировать по candidate_id в $select2?

2. @M.Hemant да, я делаю. Но результат тот же.

3. @M.Hemant есть ли какое-либо решение с помощью оператора if else? или другое утверждение?

4. Не могли бы вы, пожалуйста, показать результат запроса $ select1 и $ select2. Спасибо.

5. @pacificskybeachresort как насчет SELECT DISTINCT(candidate_id) ? Это даст вам разные значения

Ответ №1:

Вы можете изменить свой запрос с помощью SELECT DISTINCT функции. проверьте этот измененный код ниже:

 <?php 
$quarter = '1st';
$year = '2019';
$select1 = mysqli_query($db, "SELECT MAX(number_votes) FROM inter_department_votes WHERE quarter = '$quarter' AND year_date = '$year' AND number_votes != 0 AND status = '1' GROUP BY dept_id");

    while ($row1 = mysqli_fetch_array($select1)) {
        $number_votes1 = $row1['MAX(number_votes)'];

        $select2 = mysqli_query($db, "SELECT DISTINCT candidate_id FROM inter_department_votes WHERE number_votes = '".$number_votes1."' GROUP BY candidate_id");

        while ($row2 = mysqli_fetch_array($select2)) {
            $candidate_id2 = $row2['candidate_id'];
            echo $candidate_id2 . " " . "<br />";
        }
    }
  

Комментарии:

1. результат тот же :-((

2. @pacificskybeachresort, обновите ответ, пожалуйста, проверьте

3. Я заключил переменную $number_votes1 в двойные кавычки и добавил group by