Могу ли я объединить строки MySQL без переопределения значений? - PullRequest
0 голосов
/ 16 апреля 2019

Итак, у меня есть таблица базы данных, в которой я сохраняю состав набора в несколько строк.Это означает, что каждая строка имеет один и тот же KitID, но в каждой строке есть свой элемент (как вы можете видеть на изображении). DB structure

То, чего я хочу добиться, - это отобразитьв datatable Kittype со всеми компонентами в одной строке (если я использую foreach, то я получу несколько KitTypes с одинаковым идентификатором вместо одного).Поэтому мой ожидаемый результат должен выглядеть следующим образом: KitTypeID = 4, ComponentID = 27, 28, 29 и CompAmount = 20, 12, 23.

Мой вопрос заключается в том, существует ли метод, который позволяет мне объединять строкибез переопределения componentID и CompAmount.Я не могу добавить больше столбцов в базу данных, структура должна быть такой.

1 Ответ

0 голосов
/ 16 апреля 2019

Я уже нашел решение для этого.

    $results = array();
    foreach($KitTypes as $row => $field) {
      //check if KitTypeID is already set and store the index value it exist within
      $existing_index = NULL;
      foreach($results as $result_row => $result_field) {
        if ($result_field['KitTypeID'] == $field['KitTypeID']) {
          $existing_index = $result_row;
          break;
        }
      }
      if (isset($existing_index)) {
        //the KitTypeID already exist, so add to the existing KitTypeID
        $dataArrayIndex = count($results[$existing_index]['Components']);
        $results[$existing_index]['Components'][$dataArrayIndex]['Product_Name'] = $field['Product_Name'];
        $results[$existing_index]['Components'][$dataArrayIndex]['CompAmount'] = $field['CompAmount'];
      }
      else {
        //the KitTypeID does not exist, create it
        $results_index = count($results);
        $results[$results_index]['KitTypeID'] = $field['KitTypeID'];
        $results[$results_index]['Components'][0]['Product_Name'] = $field['Product_Name'];
        $results[$results_index]['Components'][0]['CompAmount'] = $field['CompAmount'];
      }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...