我有两个表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();
这个返回我的空数组。需要你的帮助。提前谢谢。
答案 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();
答案 1 :(得分:0)