我有2个表CP和CS结构如下。
CP
id tu su
1 7 1
2 7 2
.---------------------------------。
CS
id st cp
1 8 1
2 9 1
3 9 2
4 2 1
.--------------------------------。
我想创建一个函数get_cp($ tu)来返回这样的数据。 get_cp(7)=
su
'1'
[0] = array('st'=>'8')
[1] = array('st'=>'9')
[2] = array('st'=>'2')
'2'
[0] = array('st'=>'2')
似乎我可以使用GROUP_CONCAT来制作一个X分隔字符串,然后解析它...但我想知道是否有一种“更好”的方式。解析字符串似乎很浪费,如果mySQL可以像这样返回数据,这将是很好的。 我应该根本不使用GROUP,然后在我有一个重复的重复列表之后使用php将事物分组在一起吗?
谢谢!如果您不确定我在问什么,请提出问题。 谢谢!
答案 0 :(得分:1)
您可以使用GROUP_CONCAT()
。一般来说,我认为如果你能在数据库方面做到这一点,你应该这样做。
但是,在这种情况下,无论您使用什么查询,都必须循环结果以构造您描述的数组。
因此,我将执行以下查询并使用PHP构建分组。
$data = array();
$results = mysql_query('SELECT st, cp FROM CS');
while ($row = mysql_fetch_assoc($results)) {
$data[$row['cp']][] = $row['st'];
}
注意:这不是为了提高性能而订购的。如果您按特定顺序需要它们,请添加ORDER BY
。