Oznámení
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)