Nette\Database Query DELETE hlásí syntax error
- MW
- Člen | 626
Zdravím a prosím o radu,
Toto me hlásí SQL syntax error
$this->database->query("DELETE FROM rides WHERE NOT EXISTS (SELECT id FROM actions WHERE actions.rides_id = rides.id)");
SQLSTATE[42000]: Syntax error or access violation: 1064 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 'DELETE FROM rides WHERE NOT EXISTS (SELECT id FROM actions WHERE actions.r' at line 1
Ale dotaz mám správně
"DELETE FROM rides WHERE NOT EXISTS (SELECT id FROM actions WHERE actions.rides_id = rides.id)"
Projde bez problému.
Kde může být chyba prosím?
Díky
Editoval MW (29. 5. 2018 15:01)
- neznamy_uzivatel
- Člen | 115
SELECT id FROM actions WHERE actions.rides_id = rides.id
→ Unknown column ‚rides.id‘ in ‚where clause‘
Upravil jsem:
SELECT id FROM actions, rides WHERE actions.rides_id = rides.id
→ Column ‚id‘ in field list is ambiguous
Takže ještě jedna úprava:
SELECT rides.id AS id FROM actions, rides WHERE actions.rides_id = rides.id
Nakonec ještě nejde tu podmínku psát vzhledem k tabulce, kde děláš
insert/update/delete, takže dohromady:
DELETE FROM rides WHERE NOT EXISTS (SELECT rides.id AS id FROM actions, (SELECT * FROM rides) as rides WHERE actions.rides_id = rides.id)
To ale jen tak na rychlovku :) Dotaz projde, ale nezaručuju, že dělá to, co chceš :)
- David Matějka
- Moderator | 6445
@MW
- kdyz ten dotaz spustis pres adminer, tak funguje?
- kdyz se kouknes do query panelu, jak ten dotaz vypada?
- MW
- Člen | 626
David Matějka napsal(a):
@MW
- kdyz ten dotaz spustis pres adminer, tak funguje?
- kdyz se kouknes do query panelu, jak ten dotaz vypada?
Ano, přes phpmyadmin či adminer projde a udělá co má.
V Query panelu je také naprosto stejně.
Ale v query() prostě neprojde… I v query panelu je u něj ERROR.