Spojení více tabulek dohromady
- Lebow
- Člen | 9
Ahojte,
původně jsem si napsal dotaz do databáze přímo pomocí dotazu, ale nyní se
to zkouším přepsat, ale nějak se mně nedaří, ať to zkouším jakkoliv,
tak to háže chyby. Neporadil by někdo, kde dělám chyby?
původní dotaz:
$selection = $this->database->query('SELECT categories.name, text, rating, jokes.id FROM joke_categories JOIN categories ON joke_categories.categories_id = categories.id JOIN jokes ON joke_categories.jokes_id = jokes.id where categories.url = ? AND jokes.state = ? ORDER BY ? LIMIT ? OFFSET ?', $url, $state, $sorter, $paginator->getLength(), $paginator->getOffset());
nový pokus: (limit ani offset ani zbytek nemam dopsany, protoze uz ted to hlasi chyby :( )
$test = $this->database->table('joke_categories');
$test->where('joke_categories.categories_id', 'categories.id');
$test->where('joke_categories.jokes_id', 'jokes.id');
$test->where('categories.url = ?', $url);
Díky
- Mysteria
- Člen | 797
Ty prostřední dva WHERE rozhodně vyhoď ty tam jsou k ničemu, NDBT si JOINy dělá samo. Nevím jakou přesně máš strukturu tabulek, ale pokud tam máš správně nastaveny cizí klíče (nebo dodržuješ konvence), tak tohle by ti mělo fungovat něco jako:
$this->database->table('joke_categories')
->where('categories.url' = ?, $url)
->where('jokes.state = ?', $state);
Editoval Mysteria (21. 7. 2016 22:44)
- Lebow
- Člen | 9
tak u6 jsem došel jsem a už mám jedinej bod asi kde to nefunguje :(
$select = $this->database->table('jokes')->where('TADY NEVIM CO DAT')->where('jokes.state = ?', $state)->order($sorter)->limit($paginator->getLength(), $paginator->getOffset());
Jedna se mne o to, ze mam tabulku s vtipama, kategoriema a pak mam rekneme propojovaci tabulku, kde je vzdy ID vtipu a ID kategorie – jeden vtip muze byt ve vice kategoriich. Takze mne prijde nazev kategorie (url), ja potrebuju vytahnout id kategorie podle url, s timto ID kategorie jit do joke_categories, vytahnout si potrebna jokes_id a podle jokes_id si vztahnout z tabulky polozky text …
struktura DB je asi takova:
jokes categories joke_categories
------ ----------- ---------------
id id id
text name categories_id
rating url jokes_id
Pomohl by nekdo? Doufam, ze ten popis alespon trochu dava smysl :)
Predem diky
Editoval Lebow (22. 7. 2016 9:17)