2011-10-21 18 views
0

我具備的功能:使用MySQL語句而不是子選擇中的一個函數

function get_kwp($siteid){ 

$this->db->select('siteid') 
     ->from('nwsite') 
     ->where('siteid', $siteid); 
} 

我現在想包括另一個MySQL語句中這個功能,省去做一個子選擇每次我需要調用它。

這就是被稱爲其他MySQL聲明,我需要它變成:

$this->db->select("day, month, get_kwp($siteid) AS kwp") 
     ->from('nwsite'); 

這似乎並沒有要執行的函數get_kwp()。

任何想法?

感謝

+0

我覺得你笨全光照,所以你應該使用一些'join'或'union'在您的查詢,也可以執行查詢(如果它是笨),比如'$這個 - > DB->查詢(「from表where條件選擇A,b,C」)'只是沒有築巢 – user973254

+0

是我用笨的任何方法但我想要在一個函數中完成子查詢,所以我不必爲其他13個查詢寫出它在哪裏將被使用。 – lmpearce1

+0

@ Impearce1好了,活動記錄會自動轉義任何值,所以你沒有選擇,只能恢復到手動查詢或Jan-Henk的漂亮解決方案 –

回答

2

笨上查詢一個簡單的谷歌將返回以下結果:http://codeigniter.com/wiki/Subqueries

不能包括在SQL SELECT語句中的PHP函數調用。您應該在數據庫語句中構建子查詢。使用我給出的鏈接來看看如何真正做到這一點。

編輯

我剛纔看到的是,文章引用GitHub上一個庫,但該庫的安裝非常簡單。

0

你可以寫在MySQL的函數:

DELIMITER $$ 

CREATE FUNCTION get_kwp(Mysite_id INTEGER) RETURNS INTEGER 
BEGIN 
    DECLARE result INTEGER; 
    SELECT siteid INTO result FROM nwsite WHERE siteid = Mysite_id LIMIT 1; 
    RETURN result; 
END $$ 

DELIMITER ; 

和使用,在您的查詢:

SELECT day, month, get_kwp('$siteid') AS kwp FROM nwsite; 
相關問題