Výběr podle dvou cizých klíčů

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

Ahoj, vůbec si nevím rady s jedním selectem, prosím vás tedy o radu.

Mám tyto tabulky

menu (idmenu)
menu_has_zbozi (idmenu, idzbozi)
zbozi (idzbozi)
zbozikus (idzbozikus, idzbozi)

Snažím se vymyslet nette database dotaz pro tento případ, kdy znám jen idmenu:

Select * from zbozikus
Join zbozi on zbozi.idzbozi = zbozikus.idzbozi
Left Join menu_has_zbozi on menu_has_zbozi.idzbozi = zbozi.idzbozi and idmenu = $id

Mockrát díky za kteroukoliv radu
Míra

David Matějka
Moderator | 6445
+
0
-

opravdu to idmenu=$id chces davat do leftjoinu? protoze to ti vzdycky vybere vsechny polozky – jen ty sloupecky z menu_has_zbozi budou obcas NULL
jestli to ale chces dat do where, tak dotaz bude asi takhle:

$selection = $connection->table('zbozikus');

$selection->where('zbozikus.zbozi.menu_has_zbozi:idmenu', $id); //pro nette 2.0
$selection->where('zbozikus.zbozi:menu_has_zbozi.idmenu', $id); //pro nette 2.1
//pokud chces vybrat data i z dalsich tabulek:
$selection->select('zbozikus.*, zbozikus.zbozi.*, zbozikus.zbozi.menu_has_zbozi:*') //pro 2.0
$selection->select('zbozikus.*, zbozikus.zbozi.*, zbozikus.zbozi:menu_has_zbozi.*') //pro 2.1
Miri
Člen | 117
+
0
-

Máš pravdu, ten left join jsem se upsal, měl by tam být Join.

Bhoužel mi stále nefunguje. mám verzi 2.0
a píše mi to toto: No reference found for $zbozikus->zbozikus

Miri
Člen | 117
+
0
-

Tak to nakonec bylo takto:

$selection = $connection->table(‚zbozikus‘);

$selection->where(‚idzbozi.menu_has_zbozi:idmenu‘, $id); //pro nette 2.0

Každopádně díky za postrčení, moc mi to pomohlo.