Nevím přijít na select count (nette 2.4)
- zdeno
- Člen | 13
ahoj,
chtěl bych tento dotaz převést do Selection:
SELECT project.title, (SELECT count(task.projectID) FROM task WHERE
task.projectID = project.id)
FROM project
nebo nějakou lepší alternativu toho dotazu :)
skúšal jsem
<?php
$select = $this->database->table('project');
$select->select("COUNT(task.projectID)", "project.id = task.projectID");
?>
No reference found for $project->task
klic v tabulce mam
task.projectID → project.id
dekuji
- zdeno
- Člen | 13
není to náročnější pro db když bude těch tasků hodně?
zejména pokud budu chtít jen počty některých projektů, které se týkají
určitého uživatele?
(project
.id
IN (1, 7, 4))
asi se vratim k puvodnimu
<?php
$this->database->query("SELECT project.title, (SELECT count(task.projectID) FROM task WHERE task.projectID = project.id)
FROM project");
?>
- GEpic
- Člen | 566
zdeno napsal(a):
není to náročnější pro db když bude těch tasků hodně?
zejména pokud budu chtít jen počty některých projektů, které se týkají určitého uživatele?
(project
.id
IN (1, 7, 4))asi se vratim k puvodnimu
<?php $this->database->query("SELECT project.title, (SELECT count(task.projectID) FROM task WHERE task.projectID = project.id) FROM project"); ?>
Pořád to bude v rámci jednoho dotazu a to se o databázi bát nemusíš. Problém je, když je v rámci jednoho requestu několik dotazů na databázi. Ale ty máš pořád možnost to sloučit do jednoho. K tomu všemu stačí přidat WHERE, jak píšeš. :)
V Tracy navíc vidíš, kolik času dotazy zaberou, a pokud je to v rámci ms (max desítek ms), tak to nemá smysl řešit.
PS: https://doc.nette.org/…ase/explorer tady je to popsané
Editoval GEpic (29. 5. 2016 23:29)