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
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!
- llook
- Člen | 407
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);