NDB left join na základe rôznych FK v ON podmienke

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

Čaute viete mi poradiť,

mám nasledujúci query

select users.display_name, contacts.*
from test_contacts as c
left join test_users as u on u.private_id = c.owner_private_id
WHERE
c.owner_private_id = 10;

Chcel by som mať zapísaný v NDB. Viete mi niekto poradiť?

Ďakujem

vvoody
Člen | 910
+
0
-

Tvoje query nedáva zmysel, query prevádzaš nad tabuľkou test_contacts ku ktorej joinuješ test_users, pritom vyberáš dáta z tabuliek users a contacts.

romiix.org
Člen | 343
+
0
-

Ak si myslel tabuľku nejak takto:

SELECT users.display_name, contacts.*
FROM contacts
LEFT JOIN users ON users.private_id = contacts.owner_private_id
WHERE
c.owner_private_id = 10;

tak by to mohlo vyzerať nasledovne:

$contacts = $conncetion->getTable("contacts")->where("owner_private_id",10);
echo $contacts->ref("users", "owner_private_id")->display_name;
echo $contacts->stlpecTabulkyContacts1; // vyťahuj iba stĺpce ktoré potrebuješ a nie všetky (*)
mbohovic
Člen | 13
+
0
-

vvoody napsal(a):

Tvoje query nedáva zmysel, query prevádzaš nad tabuľkou test_contacts ku ktorej joinuješ test_users, pritom vyberáš dáta z tabuliek users a contacts.

Pardón áno je tam preklep, moja chyba.

Malo byť:

select u.display_name, c.*
from contacts as c
left join users as u on u.private_id = c.owner_private_id
WHERE
c.owner_private_id = 10;
mbohovic
Člen | 13
+
0
-

@romiix.org Dik ale pouzivam Nette 2.1 a tam ref nefunguje, nevies ako to je v 2.1 dev? Tiez v tabulkach nie su definovane cudzie kluce.

romiix.org
Člen | 343
+
0
-

Prečo tam nie sú definované cudzie kľúče?

Aj v 2.1 by malo byť ref().

Editoval romiix.org (5. 12. 2013 14:12)

mbohovic
Člen | 13
+
0
-

romiix.org napsal(a):

Prečo tam nie sú definované cudzie kľúče?

Dostal som takýto návrh databázy a zatiaľ ho nemôžem upravovať.