如何在Yii2中使用不相等的查询

时间:2017-04-27 07:41:47

标签: php yii phpmyadmin yii2 yii2-advanced-app

enter image description here

  

我有两个表ad_pool和adsisment。广告是空的,ad_pool有一些数据。我正在使用此代码从第一个表格中选择不相等的查询值,例如:和'<>',' fisttablekey',' second_tbl_key&#39 ;])。这是我用来检索数据的完整代码,我也上传了图片。

$pool1 = (new Query())>select('p.id,p.cleaner_user_id,p.ad_place_id')
                   ->from('ad_pool p')
                   ->innerJoin('advertisment a' , 'p.id = a.pool_id')
                 ->where(['=','ad_place_id',1])
                 ->andWhere(['<>','p.id','a.pool_id'])
                 ->orderBy(new Expression('rand()'))
                // ->limit(1)
                ->all();
                  var_dump($pool1);
                  exit();

这个返回我的空数组。需要你的帮助。提前谢谢。

2 个答案:

答案 0 :(得分:4)

INNER JOIN关键字选择两个表中具有匹配值的记录。 由于您的广告是空的,它不会返回任何数据。您可以改为使用LEFT JOIN。

$pool1 = (new Query())>select('p.id,p.cleaner_user_id,p.ad_place_id')
                   ->from('ad_pool p')
                   ->leftJoin('advertisment a' , 'p.id = a.pool_id')
                 ->where(['=','ad_place_id',1])
                 ->andWhere(['<>','p.id','a.pool_id'])
                 ->orderBy(new Expression('rand()'))
                ->all();

W3Schools Reference

答案 1 :(得分:0)

This way i solved this problem after whole day search

这样我在3到4个小时后就解决了这个问题。从第二个表中获取所需的值(如果有),然后将其转换为单个数组并在NOT IN条件下使用它。 (我们必须热爱帮助他人,我们应该互相帮助)。