У меня есть некоторый 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.Это мой код.
$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);
Я считаю этот код более читабельным и простым, чем другие.