内部Join / left返回的五行/记录/数组Join作为一行/记录/数组 - php

时间:2012-04-22 12:37:27

标签: php left-join inner-join

我有桌子:课程和表格:会话。 А课程可能有多个课程(例如5个课程)。我需要做什么(可能在PHP中)将这5个记录当然和会话转换为一个记录/数组?我已经尝试了array_merge()和array_merge递归(),但没有成功。

如果您需要我收到的确切数据/行/记录/数组,我会发布它们。

感谢。

编辑:

public function getCourses($dateFrom, $dateTo)
{
$select = $this->_dbTableCourseTimetables->select()->setIntegrityCheck(false); 
$select->from(array('a' => 'course_timetables'), 'a.id_course_timetables'); 
$select->where('b.start_time >= ?', $dateFrom);
$select->where('b.end_time <= ?', $dateTo);
$select->where('b.isActive >= ?', 'yes');
$select->joinInner(array('b' => 'course_sessions'), 'a.id_course_timetables =  b.id_course_timetables', 'b.id_course_sessions');
echo $select;
return $this->_dbTableCourseTimetables->fetchAll($select)->toArray();
} 

这是我的Zend查询,它生成了这个SQL:

SELECT a.id_course_timetables, b.id_course_sessions FROM course_timetables AS a INNER JOIN course_sessions AS b ON a.id_course_timetables = b.id_course_timetables WHERE (b.start_time >= '1332745200') AND (b.end_time <= '1333350000') AND (b.isActive >= 'yes')

如果我执行它。它返回:

id_course | id_course_sessions
--------- ----------------- 
303       533 
303       534  
303       532 
304       535

当我循环遍历foreach()时,它渲染了四个项目。我其实想成为两件事,因为课程只有两件。希望有道理。感谢。

P.S。什么令人难以置信的编辑......

1 个答案:

答案 0 :(得分:0)

你可以做这样的实现。

$array = array();

foreach($your_Result_array as $k => $v) {
      if (empty($array[$k])) {
        $array[$k] = array($v);
      } else {
        array_push($array[$k], array($v));
      }
}

var_dump($array);

//Your array will be like [303] => array(534, 532, 533), [304] = array(535)

希望这有帮助

相关问题