Join 之外的子查询

Subjquery outside of Join

楼下的代码将执行这样的查询

SELECT anrede FROM `l_anrede` INNER JOIN `person` ON `l_anrede`.id = `person`.id_anrede

但我需要这样的查询:

  SELECT anrede FROM `l_anrede` INNER JOIN `person` ON `l_anrede`.id=`person`.id_anrede  WHERE

person.id IN(SELECT id_person FROM bewerber WHERE person.id=bewerber.id);

关于如何完善此代码的任何想法:

$query = LAnrede::find();
/*
$subQuery = Bewerber::find()->select(['id_person'])
                ->from('bewerber')->where('person.id= bewerber.id');*/

$query->select('anrede')->from('l_anrede')->innerJoin('Person', 'l_anrede.id = person.id_anrede');
var_dump($query->one());

如果您调用 LAnrede::find(),则不必使用 ->from('l_anrede') - 查询将 select 来自 table 的数据与您的模型相关联。要在 where() 方法中使用子查询,请尝试这样:

$query->andWhere(['person.id' => $subQuery]);