Jaký dotaz spojí dva cizí klíče s jednou tabulkou dvakrát?

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

Jak získat data z pomocí Database z tabulky, která má dva nezávislé sloupce, které odkazují na stejnou referenční tabulku? Myslím problém ne zas tak neobvyklí, ovšem takováto struktura uvádí zřejmě Nette Database do rozpaků…

Například mějme v tabulce OSOBA tyto atributy odkazující do tabulky ADRESA

OSOBA
jmeno,
prijmeni,
...
dorucovaci_addresa_id int (cizí klič do tabulky ADRESA)
fakturacni_addresa_id int (cizí klíč do tabulky ADRESA)

Jakým dotazem získat Table\Selection, který dokáže zpřístupnit data z tabulky ADRESA pro oba atributy tabulky OSOBA?

vvoody
Člen | 910
+
0
-
$osoba->dorucovaci_addresa;
$osoba->fakturacni_addresa;

Btw :D addresa?

bumprask
Člen | 59
+
0
-

Jde o to, že potřebuji získat select, který vrátí třídu Nette\Database\Table\Selection nikoliv ActiveRow

Tedy snažím se o něco takového konkrétně a nejde to:

/** @var Nette\Database\Table\Selection **/
public $data;

...

//tento select ovšem nevygeneruje očekávaný SQL dotaz a nevím jak docílit podobného selectu, aby to fungovalo
$data = $this->table("nazev_tabulky")->select("dorucovaci_adresa.mesto AS d_mesto, fakturacni_adresa.mesto AS f_mesto")

Editoval bumprask (5. 3. 2013 22:19)

Šaman
Člen | 2666
+
0
-

Abys dostal osoby i s adresama, musel bys použít dva joiny.
Otázka je, jestli to skutečně potřebuješ – vážně nestačí Selection osob a teprve při zpracování konkrétní osoby dotáhnout adresy? Řekl bych, že to více odpovídá filosofii NDatabase nebo NotORM.

bumprask
Člen | 59
+
0
-

Hlavním důvodem proč to takhle potřebuju je třída, která obstará export dat do CSV, této třídě předám pouze hotový (najoinovaný) select z databáze a o nic víc se nestarám. Tedy potřebuju mít předem sestavená data pro výpis, nikoliv je sestavovat až v cyklu.

Editoval bumprask (5. 3. 2013 22:38)