Nette\Database JOIN table a LEFT JOIN table
- Oli
- Člen | 1215
Zdravím,
začínám s nette tak je můj dataz asi dost lamerskej. Nějak pořeád
nemůžu přijít na to jak JOINovat tabulky. Z různých kódů co jsem
procházel jsem to zkoušel spojit přes where, ale nefunguje to přesně tak
jak bych čekal. někde se tam vložila navíc tabulka:
$this->database->table('zam_categorylist')->where('zam_productlist.categorylist_id = ?', 3);
vygeneruje tenhle dotaz:
SELECT `zam_categorylist`.*
FROM `zam_categorylist`
INNER JOIN `zam_productlist` ON `zam_categorylist`.`zam_productlist_id` = `zam_productlist`.`id`
WHERE (`zam_productlist`.`categorylist_id` = ?)
Byl by někdo tak hodnej a odkázal mě někam, kde to je vysvětlený, případně uvedl exemplární příklad zde? Potřeboval bych aby mě to vygenerovalo SQL:
SELECT *
FROM zam_categorylist JOIN zam_productlist ON zam_categorylist.id = zam_productlist.categorylist_id
popřípadě
SELECT * FROM zam_categorylist LEFT JOIN zam_productlist ON zam_categorylist.id = zam_productlist.categorylist_id
Díky moc za rady!
- Oli
- Člen | 1215
Tím se odboural ten problem, že to vložilo tabulku navíc. Ještě tam byl
jeden problém (který jsem přehlídl), že to vrací nesmyslnej řetězec
zam_productlist
.zam_categorylist_id
(zam_categorylist_id neexistuje):
SELECT `zam_categorylist`.*
FROM `zam_categorylist`
INNER JOIN `zam_productlist` ON `zam_categorylist`.`id` = `zam_productlist`.`zam_categorylist_id`
WHERE (`zam_productlist`.`categorylist_id` = ?)
Každopádně moc díky! Nechá se teda obecně říct, že když JOINuju 2 tabulky tak tam mám použít dvojtečku?
- .:M@rt!n:.
- Člen | 201
Ahoj, řeším podobný problém s propojením tabulek. Mám tento dotaz nad databází:
SELECT polozka.cena, polozka.nazev, polozka.objem
FROM polozka
INNER JOIN kategorie ON polozka.id_kategorie = kategorie.id
INNER JOIN listek ON kategorie.id_listek = listek.id
WHERE listek.id =1
ORDER BY polozka.id
a nevím jak ho převést do NotORM dotazu. Zatím mám v presenteru toto, kde propojování nemám zatím řešené, ale potřebuji aby to něco vybíralo:
$this->template->polozka = $this->context->createPolozka()
->where('id_kategorie <= 17')->order('id_kategorie, nazev ASC');
Díky za radu
- patriksima
- Člen | 58
Já si nevím rady s tímhle dotazem v Nette\Database. Dotaz se dvěma joiny, řazení podle sloupce top tabulky. Tuším, že v Table\Selection to nejde řešit, že?
SELECT c.name as client, l.name as list, le.*
FROM wm_list_email as le
LEFT JOIN wm_list as l on l.id = le.list_id
LEFT JOIN wm_client as c on c.id = l.client_id
ORDER BY client
Díky
Btw.: V Chromiu mi nejde přidat komentář. Editor tu prostě není.
Editoval patriksima (21. 6. 2012 13:52)