UPDATE závislý na hodnotě sloupce z jiné tabulky

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

Ahoj,

potřebuji provést UPADTE řádků, které vybírám i na základě hodnot z jiné tabulky.

Mám následující příkaz

<?php
public function accountTranslatorAll($translatorId) {
        return $this->db->table('translator_project')->where('translator_id', $translatorId)->where('accounted', 0)->where('project.status > ?', 1)->update(array('accounted' => 1));
    }
?>

Vyhodí to chybu: Column not found: 1054 Unknown column ‚project.status‘ in ‚where clause‘

Tabulky translator_project a project mám propojené pomocí cizího klíče project_id v tabulce translator_project. Pokud místo UPDATE zkusím příkaz SELECT, tak vše proběhne OK.

Dotaz – příkaz UPDATE se takto použít nedá? Pokud ne, jaké by bylo řešení, když potřebuji změnit řádky, které potřebuji vybrat i na základě hodnoty z jiné tabulky?

Díky za pomoc!

jandik.n
Člen | 41
+
0
-

Nikdo by nevěděl?

llook
Člen | 407
+
0
-

Určitě by to mělo jít čistým SQL, nějak tak:

$this->db->query("
	UPDATE translator_project
	JOIN project ON translator_project.project_id = project.id
	SET translator_project.accounted = ?
	WHERE
	  translator_project.translator_id = ?
	  AND translator_project.accounted = ?
	  AND project.status > ?
", 1, $translatorId, 0, 1);
jandik.n
Člen | 41
+
0
-

Díky, vyzkouším to.

Bylo by ale fajn, kdyby to šlo přes nette database. Ono to tedy určitě jde, ale asi se na to musí trochu jinak nebo nevím, žádný takový příklad jsem nenašel.