Zend_Db_Table子查询

Hen*_*ryk 5 php zend-framework subquery zend-db-table

我有一些SQL,我想与ZendFW一起使用,但我无法让它工作,这让我发疯.我通过此查询得到了正确的结果:

SELECT DISTINCT e.festival_id FROM entries AS e, mail_log as m 
WHERE e.status = 1 
AND e.festival_id 
NOT IN (SELECT m.entry_id FROM entries AS e, mail_log as m WHERE m.entry_id = e.festival_id)
Run Code Online (Sandbox Code Playgroud)

帮助将不胜感激.干杯:)

Mar*_*ark 11

戈兰的答案是最好的答案.但是如果你想要一个zend_db_table样式的查询,这将是另一种选择:

$sql = $table->select()
          ->setIntegrityCheck(false)
          ->from('entries', new Zend_Db_Expr('DISTINCT festival'))
          ->where('status = ?', 1)
          ->where('festival_id NOT IN (?)',new Zend_Db_Expr("SELECT m.entry_id FROM entries AS e, mail_log as m WHERE m.entry_id = e.festival_id"));
Run Code Online (Sandbox Code Playgroud)


Gor*_*rić 6

我不确定Zend_Db_Table是否能够处理子查询.

为什么需要使用Zend_Db_Table?

您可以使用Zend_Db :: query()直接执行查询.

$db = Zend_Db_Table::getDefaultAdapter();
$db->query("SELECT DISTINCT e.festival_id FROM entries AS e, mail_log as m 
    WHERE e.status = 1 
    AND e.festival_id 
    NOT IN (SELECT m.entry_id FROM entries AS e, mail_log as m WHERE m.entry_id = e.festival_id)
");
Run Code Online (Sandbox Code Playgroud)