如何根据类型对mysql中的行进行分组?

时间:2012-02-08 06:38:52

标签: php mysql optgroup

=)我只是对此问题感到困扰..如何根据类型将mysql中的行分组,这里是我的示例输入和输出...  我只想说我在我的数据库中有这些

|Name | address |  type | 
a1    add1      t_spot
c2    add2      t_acc
e3    add3      t_res
b1    add1      t_spot
d2    add2      t_acc
f3    add3      t_res

我希望按类型对其进行分组,然后使用php将其放入选择框中 我们假设这将是预期的代码

<select name='all'>
<optgroup label="t_spot">
<option value=''>a1</option>
<option value=''>b1</option>
</optgroup>

<optgroup label="t_acc">
<option value=''>c1</option>
<option value=''>d1</option>
</optgroup>

<optgroup label="t_res">
<option value=''>e1</option>
<option value=''>f1</option>
</optgroup>
</select>

请帮助..非常感谢...

2 个答案:

答案 0 :(得分:1)

在您的查询中,ORDER BY type

然后,在读取数据时,跟踪当前类型,当您看到更改时,您知道要结束当前块并开始下一个块。伪代码:

select * from table order by type
cur_type=''
while(more rows)
    if (type != cur_type)
        if (cur_type != '')
            terminate optgroup block
        start new optgroup block
    write option
if (cur_type != '')
    terminate optgroup block

答案 1 :(得分:0)

您需要使用基于类型的where子句运行多个查询:

select * from table where type = 't_spot'
select * from table where type = 't_acc'
...

或者您需要查询所有行,并根据类型在代码中按类型拆分它们。循环遍历结果并将它们放入用于填充html的单独列表中。 ORDER BY在这里可能会有所帮助,因此您可以在循环结果时跟踪类型的变化。