我有三个表: tbl_days , tbl_slots 和 tbl_bookings ,如下所示。
客户应该在一天内预订一个插槽。
使用以下查询:
$slots = $this->common->slots();
if ($slots != NULL) {
foreach ($slots as $C):
$start = $C->start;
$stop = $C->stop;
$slotspace= $start." to ".$stop;
$available='Available';
$booked ='Booked';
$sum_col[] = " IF(tbl_bookings.slot_id =". $C->id.",'".$booked."','".$available."') AS '" . $slotspace . "'";
endforeach; }
$sqlquery = $this->db->query("SELECT tbl_days.date_day,
" . implode(",", $sum_col) . "
FROM tbl_days
LEFT JOIN tbl_bookings ON tbl_bookings.date = tbl_days.date_day
LEFT JOIN tbl_slots ON tbl_slots.id = tbl_bookings.slot_id
LEFT JOIN tbl_fields ON tbl_fields.id = tbl_bookings.field_id
");
return $sqlquery->result();
预期结果应为:
请注意预订信息如何显示在同一日期的多行中。
日期自今日起(今日起7天内)
在一行中显示当天的广告位。
显示日期,无论是否有预订,如第29天。
请帮助我解决这个问题。 请注意,我正在使用数据表。
答案 0 :(得分:0)
因此,每个条目都显示在一个新行中,而不是在一行中相互连接的所有内容,对吧?我过去遇到了同样的问题,解决方案是第二个foreach
。第二个应该查看所有记录,看看是否有一个连接到另一个。