2017-06-23 44 views
0

我有三個表:tbl_daystbl_slotstbl_bookings如下。Mysql的加入多行,而不是一個返回結果爲每個實例

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日。

請幫助我如何去做這件事。 請注意,我正在使用數據表。

回答

0

因此,每個條目都顯示在一個新行中,而不是在一行中彼此連接的所有東西,對嗎?我在過去遇到過同樣的問題,解決方案是第二個foreach。第二個應該看所有的記錄,看看是否有人連接到另一個。

看到我的問題:Each value is displayed in a new row HTML table

+0

看過它,很不幸,它沒有解決我的問題。 – mutiemule

相關問題