Mysql join为每个实例

时间:2017-06-23 13:23:16

标签: php mysql datatable

我有三个表: tbl_days tbl_slots tbl_bookings ,如下所示。

tbl_days - Contains days in a whole year

tbl_slots - Contains hourly timings in a day

tbl_bookings - Contains customer booking data

客户应该在一天内预订一个插槽。

使用以下查询:

$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();

但是,结果显示为:enter image description here

预期结果应为:

enter image description here

请注意预订信息如何显示在同一日期的多行中。

  1. 日期自今日起(今日起7天内)

  2. 在一行中显示当天的广告位。

  3. 显示日期,无论是否有预订,如第29天。

  4. 请帮助我解决这个问题。 请注意,我正在使用数据表。

1 个答案:

答案 0 :(得分:0)

因此,每个条目都显示在一个新行中,而不是在一行中相互连接的所有内容,对吧?我过去遇到了同样的问题,解决方案是第二个foreach。第二个应该查看所有记录,看看是否有一个连接到另一个。

请参阅我的问题:Each value is displayed in a new row HTML table