tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

SELECT namísto VALUES v INSERTu vs DibiFluent

před 10 lety

m0t3jl
Člen | 293

Ahoj,
možná něco přehlížím, ale není mi jasné, jestli je možné pomocí DibiFluent řešit následující příkaz ?:

SELECT INTO [tabulka] ([sloupec1], [sloupec2]) (SELECT [sloupec1], [sloupec2] FROM [jinaTabulka] WHERE [sloupec1] = 10)

Zkoušel jsem

dibi::insert('tabulka', array('sloupec1', sloupec2'))->select('sloupec1')->select('sloupec2')->from('jinaTabulka')->where('[sloupec1] = 10')

to ale automaticky vytvoří toto:
INSERT INTO „tabulka“ („0“, „1“) VALUES(‚sloupec1‘, ‚sloupec2‘) SELECT … – není to úplně to, co bych potřeboval. Jde to nějak v současné verzi udělat? Představoval bych si buď možnost namísto 2. argumentu insert použít namísto array i DibiFluent, který by představoval select, nebo udělat insert pouze s jedním parametrem a přidat metodu values(), případně kvůli kompatibilitě to nějak zkombinovat – když dostanu jako 2. parametr array, konám VALUES(), když dostanu DibiFluent – beru to jako select, když nedostanu nic, očekávám volání metody values(), nebo select().

Snad jsem můj záměr vysvětlitl dostatečně jasně :D.

Editoval m0t3jl (18. 3. 2009 22:37)

před 10 lety

m0t3jl
Člen | 293

Takže si odpovím sám ;). Lze to udělat například takto:

dibi::command()->insert('tabulka', '(%n, %n)', 'sloupec1', 'sloupec2')->select('sloupec1')->select('sloupec2')->from('jinaTabulka')->where('[sloupec1] = 10');

Editoval m0t3jl (18. 3. 2009 22:38)