2012-02-08 108 views
-1

=)我只是困扰这个问题..如何分组按照公在此输入mysql中的行是我的例子输入和输出的.. 让只想说,我在我的数据库有这些如何根据类型在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> 

请帮助..thanks很多它会理解把它在选择框..

+1

你想查询什么或PHP脚本?顺便说一句,你到目前为止尝试过什么? – 2012-02-08 06:42:29

+0

显然你不是在那里创建一个mysql组... – 2012-02-08 06:54:14

回答

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 
0

你要么需要用where子句基于该类型运行多个查询:

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

,或者您需要查询所有行并根据您的代码按类型划分他们类型。循环浏览结果并将其放入用于填充HTML的单独列表中。 ORDER BY在这里可能会有所帮助,所以您可以在循环查看结果时跟踪类型的更改时间。

相关问题