tklenin
Benutzer
- Beiträge
- 15
Hallo Leute, ich habe folgendes Datenbankmodell(s. Upload ERD.png).
Wie lautet das query,welches mir die Anrede für die Tabelle bewerber zurück gibt?
Folgendes query liefert mir 'Herr','Frau' zurück:
<code>
SELECT anrede FROM L_anrede JOIN Person ON L_anrede.id=Person.id_anrede WHERE Person.id IN
(SELECT id_person FROM Bewerber);
</code>
Folgendes query liefert mit 'Herr' zurück:
<code>
SELECT anrede FROM L_anrede JOIN Person ON L_anrede.id=Person.id_anrede WHERE Person.id IN
(SELECT id_person FROM Bewerber WHERE Bewerber.id_person=1);
</code>
Meine Fragen sind folgende:
<code>
$idPerson = findOne([$model->id_person])->id;
LAnrede::find()->joinWith(['Person' => function($q) use($idPerson) {
$q->andWhere([
'Person.id' => (new \yii\db\Query())->from('Bewerber')->where(['Bewerber.id_person' => $idPerson])
]);
}]);
</code>
Wie lautet das query,welches mir die Anrede für die Tabelle bewerber zurück gibt?
Folgendes query liefert mir 'Herr','Frau' zurück:
<code>
SELECT anrede FROM L_anrede JOIN Person ON L_anrede.id=Person.id_anrede WHERE Person.id IN
(SELECT id_person FROM Bewerber);
</code>
Folgendes query liefert mit 'Herr' zurück:
<code>
SELECT anrede FROM L_anrede JOIN Person ON L_anrede.id=Person.id_anrede WHERE Person.id IN
(SELECT id_person FROM Bewerber WHERE Bewerber.id_person=1);
</code>
Meine Fragen sind folgende:
- Ist das query prinzipuiell richtig?
- Wie kann man in php die letzte WHERE-Klausel dynamisch gestalten,so daß je nach geladenem Datensatz die richtige Anrede zurück gegeben wird?
<code>
$idPerson = findOne([$model->id_person])->id;
LAnrede::find()->joinWith(['Person' => function($q) use($idPerson) {
$q->andWhere([
'Person.id' => (new \yii\db\Query())->from('Bewerber')->where(['Bewerber.id_person' => $idPerson])
]);
}]);
</code>