LEFT JOIN přes složený cizí klíč

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
sevca79
Člen | 55
+
0
-

ahoj,
prosím jak dostat hodnoty ze závislé tabulky, která je ale spojena složeným cizím klíčem

prostě když je cizí klíč jednosloupcový, tak to dostanu jednoduše

tabulka1 (id, t2_id)
tabulka2 (id, name)

$this->database->table('tabulka1')
	->select('t2_id.name');

ale co když jsou tabulky nějak takto

tabulka1 (id, t2_id1, t2_id2)
tabulka2 (id1, id2, name)

(intuitivně samozřejmě co je primární a cizí klíč)

jak teď dostanu skrze tabulku1 sloupec name z tabulky 2

a aby návratová hodnota byla Nette\Database\Table\Selection (přes $this->database->query(..) bych to asi zvládnul taky :)

David Matějka
Moderator | 6445
+
0
-

Tohle v NDBT myslim nejde. Opravdu potrebujes slozeny PK a FK?

norbe
Backer | 405
+
0
-

Můžeš to obejít pomocí téhle třídy (dlouho už jsem to nikde nepoužil tak snad to bude fungovat):

$builder = new \Fregis\Database\WhereMultiInBuilder($this->database->table('tabulka1')->select('t2_id AS id1, t2_id2 AS id2')->fetchPairs());
$this->database->table('tabulka2')->select('tabulka2.name')->where($builder->getCondition(), $builder->getParameters());