Join / subquery při update
- EyeOfThReindeer
- Člen | 4
Zdravím,
Když se pokouším v DB zkrz syntaxi table->where->update upravit
vlasnosti účastníka soutěže a najít ho zkrz ID jeho postu, dějou se
podivné věci.
Totiž:
$this->connection->table("contestant")->where(":post.id_post",$id_post);
…korektně navrací Nette\Database\Table\Selection správného účastníka, ale na základě…
$this->connection->table("contestant")->where(":post.id_post",$id_post)->update($values);
…se vytvoří dotaz…
`UPDATE `contestant
SET first_name
=‚Jane‘, surname
=‚Doe‘,
city
=‚Praha‘, street
=‚Plzeňská‘,
post_code
=40211,
email
=?, phone
=754664881,
date_of_birth
=NULL
WHERE (:post
.id_post
= ‚12‘)``
…který vyhazuje error v SQL syntaxi: „You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version for the
right syntax to use near ':post
.`id_pos … “
Uvažuji sprváně, že MySQL neumí kombinovat update s joinama a je potřeba použít subquery? A má Nette\Database nějakou podporu pro subquery nebo se normálně dělá…
$id_contestant = $this->connection->table("contestant")
->select("id_contestant")
->where(":post.id_post",$id_post)
->limit(1)->fetch()->id_contestant;
$this->connection->table("contestant")->where("id_contestant",$id_contestant)->update($values);
…?
Díky za odpověd, Sob.