2009-12-10 98 views
2

嘗試使用Zend_Db_Select複製以下查詢。任何指針?Zend DB選擇多表連接

SELECT 
    compounds.id as compounds_id, 
    reactions.id as reactions_id, 
    reaction_compound.number as reaction_compound_number 
FROM compounds, reactions, reaction_compound 
WHERE 
    compounds.id IN (68,74,112) 
    AND compounds.id = reaction_compound.compound 
    AND reactions.id = reaction_compound.reaction; 

特別是我遇到的一些問題是在Zend中進行多表連接。我不知道如何使用查詢生成器跨多個表進行連接。

任何幫助表示讚賞!

Ĵ

回答

3

的東西喜歡:

$compoundIds = array(68,74,112); 
$select = $db->select() 
    ->from('compounds', array('compounds_id' => 'id') 
    ->where('compounds.id in (?)', $compoundIds) 
    ->join('reaction_compound', 'compounds.id = reaction_compound.compound', array('reaction_compound_number' => 'number')) 
    ->join('reactions', 'reactions.id = reaction_compound.reaction', array('reaction_id' => 'id'); 

這應該讓你的地方。我沒有測試它,所以可能會有一些錯誤。

1

格式:

$db->select()->from('table_name')->join('...')->join('...') 

的偉大工程!
感謝您的海報這個信息!幫助我解決了一個非常困難的問題! (抽象表模型哦,我的!!)Lol

ps:對於其他人要使用上面詳細描述的相同格式,請記住列名將被具有相同列名的後面的表覆蓋。 快樂編碼!