Spojení více tabulek dohromady

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

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
+
+3
-

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
+
0
-

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)