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]);
楼下的代码将执行这样的查询
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]);