3
我是新来的codeigniter(虽然我想这不是一个独占的CI问题),并有一个模型中的方法,从ID连接的两个表中选择数据。更多优雅的方式来卷起多行?
表1(tblclients)看起来像这样:
+----+------------+
+ id + c_name +
+----+------------+
+ 1 + Joe Bloggs +
+ 2 + Jim Bloggs +
+ 3 + Tim Bloggs +
+----+------------+
表2(tblstars)看起来像这样:
+----+------------+
+ id + s_date +
+----+------------+
+ 1 + 27/01/12 +
+ 1 + 15/02/12 +
+ 1 + 18/02/12 +
+ 2 + 03/01/12 +
+ 2 + 11/02/12 +
+ 2 + 15/02/12 +
+ 3 + 01/01/12 +
+ 3 + 19/02/12 +
+----+------------+
我想 '卷起' 的接合数据形成为一个线在tblclients每行我可以输出,例如:
+----+------------+--------------------------------+
+ id + Name + Dates +
+----+------------+--------------------------------+
+ 1 + Joe Bloggs + 27/01/12 15/02/12 18/02/12 +
+ 2 + Jim Bloggs + 03/01/12 11/02/12 15/02/12 +
+ 3 + Tim Bloggs + 01/01/12 19/02/12 +
+----+------------+--------------------------------+
现在我已''解决'通过使用以下我的问题ñ我的模型:
function get_clients_concat()
{
$query = $this->db
->select('tblclients.id, tblclients.c_name, GROUP_CONCAT(tblstars.s_date SEPARATOR "#") AS star_dates', NULL, FALSE)
->join('tblstars', 'tblstars.id = tblclients.id', 'left')
->order_by('tblclients.id')
->group_by('tblclients.id')
->get('tblclients');
return $query->result();
}
,然后爆炸在我看来,阵列(由GROUP_CONCAT创建),并在那儿做一些处理...但它似乎真的沉闷。
有没有更好的解决方案?
我看不出有什么问题。另一种方法是不使用'GROUP_CONCAT'并使用PHP来检查迭代中'id'的变化。 – Mischa 2012-03-09 10:04:12
感谢您的回复。我虽然也许我会,与“滚动”的部分在某个地方是一个骗局,但它似乎不是。干杯。 – user1106252 2012-03-09 14:14:58
不客气。我想这也取决于你的数据集的大小。使用'GROUP_CONCAT'可能会降低性能。我不是MySQL专家。如果您将MySQL标签添加到您的问题中,您可能会收到有关该问题的反馈。如果您还添加了PHP标签,您可能会收到更多反馈。 – Mischa 2012-03-09 14:22:14