Zápis insert+select v jednom dotazu

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

Ahoj, lze nějak zapsat tento dotaz do „hezkého“ NTDB?

INSERT INTO `test_result` (`USER_ID`, `TEST_ID`, `TEST_START`, `SCORE_MAX`)
VALUES (111, 222, '20140729155518', (SELECT SUM(VALUE) FROM question WHERE ID IN (462,465,470,467,475,498,492,469,472,495)));

Zatím jsem to řešil přes query(), ale chtěl bych to přes table()->insert() + potřebuji získat ID vloženého záznamu. Díky

Scorpio
Člen | 45
+
0
-

Jestli jsem dobře přečetl dokumentaci můžeš do insert() vložit ->select() tzn.:

$data = $database->table('tabulka')->select('sloupec,sloupec2')->where('podminka = ?',1);
$database->table('tabulka2')->insert($data);

Ale nemám ozkoušeno, já nyní řeším jak přes ->insert() vlkadat jako INSERT IGNORE

Editoval Scorpio (22. 8. 2014 9:05)

n.u.r.v.
Člen | 485
+
0
-

Hmm, ale v uvedeném příkladu se pak vytvoří a pošlou dva db dotazy, ne jeden – je to tak?

Mysteria
Člen | 797
+
0
-

Je.

Scorpio
Člen | 45
+
0
-

No pokud chceš hezký zápis tak jedině tak. Myslím že jinak na jeden dotaz to databázová vrstva neumí.