Subquery mit JOIN

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:
  1. Ist das query prinzipuiell richtig?
  2. Wie kann man in php die letzte WHERE-Klausel dynamisch gestalten,so daß je nach geladenem Datensatz die richtige Anrede zurück gegeben wird?
bin bisher nur soweit gediehen:
<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>
 

Anhänge

  • ERD.png
    ERD.png
    86,1 KB · Aufrufe: 5
Werbung:
Ich glaube du suchst den ganz klassischen Join mehrerer Tabellen, z.B.:
Code:
SELECT   L_anrede.anrede
FROM   Bewerber
LEFT JOIN Person
ON     Bewerber.id_person = Person.id
LEFT JOIN L_anrede
ON     Person.id_anrede = L_anrede.id
WHERE   Bewerber.id_person = 1
 
Zurück
Oben