簡體   English   中英

SQL / PHP:選擇查詢更新結果

[英]SQL/PHP: Update result from select query

我一直在努力使它永遠工作,但似乎無法使其正常工作。 如果下周旅行時,tours_reservations表中的預訂少於8個,則需要更新我的Tours表中的一列。 我有一條選擇語句,該語句可以為我提供所需的結果(需要更新的游覽),但我不知道如何在更新語句中處理此結果。 這是我的選擇語句:

$date = new DateTime("+ $starting days");
    $day = $date->format('Y-m-d');

    $this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
                      FROM tours t
                      JOIN tours_reservations r ON t.t_id = r.tour_id
                      WHERE DAY =  '$day'
                      GROUP BY t.t_id
                      HAVING COUNT( c ) <=8");

有了這個,我得到了從7天開始的所有具有8個或更少保留的事件。 游覽表具有一個狀態字段,該字段將更新為“已取消”。 如何在更新查詢中處理此問題? 任何幫助將不勝感激。

提前致謝。

假設您的初始查詢是正確的。

$query = $this->db->query("SELECT t.t_id, t.name, t.status, COUNT( r.reservation_id ) AS c
                      FROM tours t
                      JOIN tours_reservations r ON t.t_id = r.tour_id
                      WHERE DAY =  ?
                      GROUP BY t.t_id
                      HAVING COUNT( c ) <=8", array($day));

foreach ($query->result() as $row)
{
   $this->db->query("UPDATE tours SET status = 'cancelled' WHERE t_id = ? ", array($row->t_id));
}

還添加了參數綁定。

編輯:有更好的方法可以做到這一點,而無需循環執行更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM