gpt4 book ai didi

zend-framework2 - Zf2 NOT IN表达式在Where子句中

转载 作者:行者123 更新时间:2023-12-04 05:39:26 27 4
gpt4 key购买 nike

我试图从另一个表上不存在的表中获取结果。
为此,我在where子句中使用subQuery和 NOT IN 表达式。正常的sql如下所示:

SELECT `products`.* FROM `products` WHERE `products`.`pro_id` **NOT IN** (
SELECT `product_collection`.`pro_id` AS `pro_id` FROM `product_collection` WHERE `coll_id` = '6' ) AND products.pro_id IN (55,56,57,62)

我正在为项目使用zf2。问题是我不知道如何在where子句中使用 NOT IN 表达式。我们可以在where子句中为IN表达式使用where-> in()。例如
//$productIds is an array
//$collectionId is an id

$subSelect = $this->getRawSql()->select('product_collection');
$subSelect -> columns(array('pro_id'));
$subSelect -> where(array('coll_id'=>$collectionId));

$select = $this->getRawSql()->select('products');
$select -> **where->in**('products.pro_id', $subSelect)
-> where->in('products.pro_id',$productIds);

但我不知道如何使用NOT IN表达式。

最佳答案

像使用In()一样使用notIn()。
参见:http://framework.zend.com/apidoc/2.1/classes/Zend.Db.Sql.Predicate.NotIn.html

$subSelect = $this->getRawSql()->select('product_collection');
$subSelect -> columns(array('pro_id'));
$subSelect -> where(array('coll_id'=>$collectionId));

$select = $this->getRawSql()->select('products');
$select ->where->notIn('products.pro_id', $subSelect)
->where->in('products.pro_id',$productIds);

编辑:

或改用这个

$select ->where
->addPredicate(new Zend\Db\Sql\Predicate\Expression('products.pro_id NOT IN (?)',
array($subSelect)))

关于zend-framework2 - Zf2 NOT IN表达式在Where子句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com