私はZendFWで使用したいSQLをいくつか持っていますが、それを動作させることはできません。それは私を狂ってしまいます。このクエリで正しい結果が得られます。Zend_Db_Tableサブクエリ
ヘルプがあります。乾杯。
私はZendFWで使用したいSQLをいくつか持っていますが、それを動作させることはできません。それは私を狂ってしまいます。このクエリで正しい結果が得られます。Zend_Db_Tableサブクエリ
ヘルプがあります。乾杯。
私は、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)
");
ゴランの答えが最善の答えです。しかし、もしあなたが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"));
私もあなたにお試しください。これは私のコードです。
$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);
私はこのコードを他のものよりも読みやすく簡単だと思います。私の場合は
、これは動作します:
$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);
結果は、このでした:それはフェッチののparamsにsubqueiresを扱うことができる
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')
。しかし、dbアダプタを使って何をしようとしているのかは正しいアプローチです。 – smack0007