簡體   English   中英

如何在PHP中創建子查詢?

[英]How would I create a sub query in PHP?

所以我在一個現有的系統上工作,我試圖弄清楚他們如何進行mysql設置。 他們有這樣的查詢設置

    $this->db->select('nID, nAID');
    $this->db->where('bValid', 1);
    $this->db->where('nID', (int)$nID);
    $this->db->from('event');
    $this->db->group_by('nID, nAID');

    $query = $this->db->get();

而且此查詢的效果很好,但是我需要設置一個子查詢。 我已經用SQL編寫了查詢並對其進行了測試,以確認它是否有效,但是我在弄清楚如何翻譯它時遇到了麻煩。 基本上,我需要的不是從“事件”表中獲取,我需要從在此之前所做的子選擇中獲取。 我想像會怎樣。

    $this->db->select('nID, nAID');
    $this->db->where('bValid', 1);
    $this->db->where('nID', (int)$nID);
    $this->db->from(
         $this->db->select('something, somethingelse');
         $this->db->where('something', 1);
         $this->db->get();  
    );
    $this->db->group_by('nID, nAID');

    $query = $this->db->get();
            $this->db->select('nID, nAID');
            $this->db->where('bValid', 1);
            $this->db->where('nID', (int)$nID);
            $this->db->from('event');
            $this->db->group_by('nID, nAID');

轉換以從其中bValid = 1和nId ='$ nID'按nID分組的事件中選擇nID,nAID

您的子查詢

            $this->db->select('nID, nAID');
            $this->db->where('bValid', 1);
            $this->db->where('nID', (int)$nID);
            $this->db->from(
            $this->db->select('something, somethingelse');
            $this->db->where('something', 1);
            $this->db->get();  
            );
            $this->db->group_by('nID, nAID');

大致翻譯成

            select nID, nAID select something,somethingelse where something=1 event where bValid=1 and nId='$nID' group by nID

我建議對循環中的每個記錄運行子查詢

步驟1:將此代碼放入DB_active_rec.php

 // --------------------------------------------------------------------
    /**
    * Get SELECT query string
    *
    * Compiles a SELECT query string and returns the sql.
    *
    * @param    string    the table name to select from (optional)
    * @param    bool    TRUE: resets QB values; FALSE: leave QB vaules alone
    * @return    string
    */
   public function get_compiled_select($table = '', $reset = TRUE)
   {
       if ($table !== '')
       {
           $this->_track_aliases($table);
           $this->from($table);
       }

       $select = $this->_compile_select();

       if ($reset === TRUE)
       {
           $this->_reset_select();
       }

       return $select;
   }

步驟2:嘗試

//Subquery
$this->db->select('something, somethingelse');
$this->db->where('something', 1);
$this->db->from('first_table');
$sub_query = $this->db->get_compiled_select();


$this->db->select('nID, nAID');
$this->db->where('bValid', 1);
$this->db->where('nID', (int)$nID);
$this->db->from("($sub_query) as tbl1");
$this->db->group_by('nID, nAID');

$query = $this->db->get();

告訴我是否可行。

暫無
暫無

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

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