簡體   English   中英

Zend_Db_Table子查詢

[英]Zend_Db_Table subquery

我有一些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)

幫助將不勝感激。 干杯:)

戈蘭的答案是最好的答案。 但是如果你想要一個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"));

我不確定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)
");

就我而言,這有效:

$subselect = $db->select()
  ->from(array('u1' => 'users'), 'departmentId')
  ->joinInner(array('d' => 'demand'), 'u1.userId = d.adminId', null)
  ->where('d.demandId = ?', $demand->getId());

$select2 = $db->select()
  ->from(array('u' => 'users'))
  ->where('u.departmentId = ?', $subselect);

結果如下:

SELECT `u`.* FROM `users` AS `u` WHERE u.departmentId = (SELECT `u1`.`departmentId` FROM `users` AS `u1` INNER JOIN `demand` AS `d` ON u1.userId = d.adminId WHERE d.demandId = '1')

我也試試你sql.This是我的代碼。

$select = $db->select()
      ->from(array('e' => ' entries'), array('festival_id'))
      ->distinct(true)
      ->where('e.status =?', 1)
      ->where('e.festival_id NOT IN (SELECT m.entry_id FROM entries AS e, mail_log as m WHERE m.entry_id = e.festival_id)')
      ->setIntegrityCheck(false);

我認為這段代碼比其他代碼更具可讀性和簡單性。

暫無
暫無

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

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