Zend DB选择多个表连接

时间:2009-12-10 21:52:20

标签: php sql zend-framework

尝试使用Zend_Db_Select复制以下查询。有什么指针吗?

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中进行多个表连接。我不确定如何使用他们的查询构建器在多个表之间进行连接。

感谢任何帮助!

Ĵ

2 个答案:

答案 0 :(得分:4)

喜欢的东西:

$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 :(得分:1)

格式:

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

效果很好!
感谢你们两位海报的这个信息!帮我解决了相当困难! (摘要表模型哦,我的!!)大声笑

Ps:对于即将使用上述相同格式的其他人,请记住,列名将被具有相同列名的后一个表覆盖。 快乐的编码!