分组结果为<;选项>;如果一个记录列是相同的,则插入到一个选项中


grouping results in <option> in to one option if a record column is the same

Hi我有一个SQL查询,它返回结果,然后需要进入表单的下拉列表,但是结果可能看起来像这个

  Number    Machine     Description             
09/14/0075  ZW01010   Back Left Armrest F55
09/14/0075  ZW01010   Back Right Armrest
09/14/0075  ZW01010   Front Left Hand Armrest F55
09/14/0075  ZW01010   Front Right Armrest F55
10/14/0060  ZW01010   Left Hand Armrest Substrate 
10/14/0060  ZW01010   Right Hand Armrest Substrate

目前我有这个,但创建溺水箱的代码

        <select name="WoNo">
         <?php
          foreach (PersonData::WoName(session::get('Machine')) as $a) {
             echo '<option value=' . $a["SecondRef"] . '>' . $a["Description"] . ' </option>';
         }
        ?>
        </select> 

目前,这将每个记录作为一个选项放在那里,但我唯一关心的表单值是数字列,但我确实需要那里的每个描述,所以我如何调整我的代码以将数字列中具有相同值的分组,

下面是一个例子,我给的表格例子

  Option 1: Back Left Armrest F55, Back Right Armrest, Front Left Hand Armrest F55, Front Right Armrest F55
  Option 2: Left Hand Armrest Substrate, Right Hand Armrest Substrate

或者如果有可能的话,更好的格式是

Option 1: Back Left Armrest F55
          Back Right Armrest
          Front Left Hand Armrest F55
          Front Right Armrest F55
Option 2:Left Hand Armrest Substrate 
         Right Hand Armrest Substrate

首先,您必须使用按数字字段分组的数据,然后您将获得逗号分隔的值,然后您可以使用optgoup

<optgroup label="Swedish Cars">
 <option value="volvo">Volvo</option>
 <option value="saab">Saab</option>
</optgroup>

从数据库中检索数据时,可以使用GROUP_CONNCT()函数,而不用在PHP中对数据进行分组。

SELECT Number,GROUP_COMPAT(DISTINCT Description SEPARATOR','),Machine FROM table GROUP BY Number;