Jak vybrat řádky, které mají závislý WHERE z jiné tabulky?

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

Zdravím,

máme řekněme tabulky

- posts
- 	id
-	message
- post_interests
- 	id
- 	interest_id
- 	post_id

a potřeboval bych vybrat všechny příspěvky, které mají konkrétní interest_id. Přes SQL by to šlo takto

SELECT *
FROM posts
INNER JOIN post_interests pi ON pi.interest_id IN (1)
WHERE posts.id IN (pi.post_id)

Jak to ale udělat v Nette? Tabulky mám správně vytvořené včetně cizích klíčů, ale i přesto že jsem se snažil,

		$posts = $this->db->table("posts")
			->select("posts.*, post_interests.interest_id")
			->where("posts.id IN(post_interests.post_id)")
			->where("post_interests.interest_id IN (?)", $interest_ids);

mi to vrací

No reference found for $posts->post_interests. search►

Máte někdo alternativu? Já bych klidně použil query(), ale tam mě štve, že to vrací Row místo ActiveRow a nemohu tak používat další reference.

A ano, zkoušel jsem i dvojtečku, beze změny

		$posts = $this->db->table("posts")
			->select("posts.*, post_interests.interest_id")
			->where("posts.id IN(post_interests.post_id)")
			->where(":post_interests.interest_id IN (?)", $interest_ids);

Editoval genesiscz (7. 8. 2015 1:24)

petr.jirous
Člen | 128
+
+2
-

a zkoušel si to jenom takto:

$posts = $this->db->table("posts")
    ->where(":post_interests.interest_id IN (?)", $interest_ids);

??

genesiscz
Člen | 21
+
0
-

Koukám s otevřenou pusou. Funguje to! :) Díky moc

CZechBoY
Člen | 3608
+
0
-

Pokud se připojuje related tabulka tak není nutné všude psát dvojtečku? Já měl za to, že jo.