Where podmínka přes více joinů na stejnou tabulku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- 2bfree
- Člen | 248
Mám v databázi dvě tabulky s vazbou M:N (Články a Tagy) a já bych potřeboval vytáhnout z databáze všechny články, které mají X tagů zároveň.
Tedy něco jako
/---sql
SELECT a.* FROM articles a
INNER JOIN tags AS tag1 ON tag1.article_id = c.article_id AND tag1.name =
‚prvni tag‘
INNER JOIN tags AS tag2 ON tag2.article_id = c.article_id AND tag2.name =
‚druhy tag‘
\--
Jak něco podobného zapsat v Nette Database?
- Eda
- Backer | 220
No přímo do WHERE.
$selection->where('EXISTS(...)');
Ale pozor, názvy tabulek a sloupců bys měl escapovat tímto znakem: ` (teda já to tak dělám, používám ale MySQL, nevím, jak je tomu u ostatních driverů, zda to funguje stejně) jinak je NDB bude chtít navázat na vlastní JOINy…