Условие запроса, при котором 2 данных будут объединены в 1 массив, если они имеют одинаковый уровень

#php #mysql #codeigniter #codeigniter-3

Вопрос:

У меня есть функция, в которой 2 данных будут объединены в 1 строку после генерации при нажатии кнопки. Но дело в том, что нет никаких условий или чего-то еще. Моя цель-создать условие, при котором игроки с одинаковым уровнем будут объединены в 1 ряд. Если игроки не имеют одинакового уровня, следовательно, он должен быть один в ряду с надписью «совпадение не найдено».

Ламок 1 = УРОВЕНЬ 1980 ГОДА против ЛАМОКА 5 УРОВНЯ 1980 года // Это моя цель, если у них один и тот же уровень

Lamok 1 = УРОВЕНЬ 1980 НЕ НАЙДЕН // Это моя цель, если у них не один и тот же уровень.

введите описание изображения здесь

HTML:

 lt;button type="button" class="btn bg-gradient-info btn-xs" id="matchingbutton"gt;match playerslt;/buttongt;        lt;table class="table table-bordered table-hover table-striped is-narrow is-hoverable"gt;  lt;theadgt;  lt;trgt;    lt;th class="bg-danger text-center"gt;redlt;/thgt;  lt;th class="bg-danger text-center"gt;levellt;/thgt;  lt;th class="bg-primary text-center"gt;bluelt;/thgt;  lt;th class="bg-primary text-center"gt;levellt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbody id="playerdisplay"gt;  lt;/tbodygt;    lt;/tablegt;   

Скрипт:

 $(document).on('click','#matchingbutton',function(){   $.ajax({  url:"lt;?=site_url('controller/players')?gt;",  method:"POST",  dataType:'json',  success:function(data){  $('#playerdisplay').html(data);      }  }) })  

Контроллер:

 function players(){    $query=$this-gt;model-gt;playerss();    $a=0;    $row = 'lt;trgt;';  foreach($query as $rows){        $row .= 'gt;lt;tdgt;'.$rows-gt;player.'lt;/tdgt;lt;tdgt;'.$rows-gt;level.'lt;/tdgt;';    $a  ;    if($a%2==0)  {  $row.= 'lt;/trgt;';    }     }       $row.= 'lt;/trgt;';  echo json_encode($row);    }  

Модель:

 function playerss(){  // I need some condition here if player and another player has the same LEVEL, match them/ join them in 1 row. If they don't have the same level, label it as a "no match found"  $this-gt;db-gt;order_by('rand()');  $query = $this-gt;db-gt;get('entry');  return $query-gt;result();    }  

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

1. Ваш вопрос не завершен. игроки с одинаковым уровнем будут объединены в 1 строку — (1) на вашем снимке экрана некоторые пары игроков в одной строке имеют разное значение уровня (2) вы не предоставили строгих критериев для выбора пары, когда существует более одной строки для объединения.

2. Причина, по которой они совпадают, даже если они не имеют одинакового уровня, заключается в том, что моя текущая функция еще не имеет никаких условий. Вот почему мне нужно предложение или любая помощь о том, как я могу создать условие, при котором игроки с одинаковым уровнем должны находиться в одном ряду. Я надеюсь, что вы сможете мне помочь. Спасибо

3. Разделите на группы и перечислите (начиная с нуля!) в группах, упорядочивая по уровню. Если разница между текущей и предыдущей строкой превышает точность, увеличьте номер группы и перезапустите перечисление. Затем сгруппируйте по номеру группы и номеру в группе DIV 2. В MySQL 8 используйте оконные функции в CTE, в MySQL 5 используйте пользовательские переменные.