Oznámení
Generování seznamu tabulek %n
před 11 lety
- Jakub Šulák
- Člen | 223
Chtěl bych se zeptat na jednu věc:
Jak udělat přejmenování tabulek table AS t?
Příklad:
<?php
dibi::test('SELECT table_a.xyz, table_b.abc FROM %n',array('table_a','table_b'));
// vysledek: SELECT table_a.xyz, table_b.abc FROM table_a, table_b
// ale potreboval bych mit moznost prejmenovat tabulku pomoci AS asi takto:
dibi::test('SELECT a.xyz, b.abc FROM %n',array('table_a'=>'a','table_b'=>'b'));
// vysledek: SELECT a.xyz, b.abc FROM table_a AS a, table_b AS b
?>
Je něco takového možné při použití jiné syntaxe? Tato nefunguje…
před 11 lety
- phx
- Člen | 652
dibi::query('SELECT a.xyz, b.abc FROM table_a AS a, table_b b');
// vhodne je zapisovat nazvy tabulek a sloupecku do `` nebo do [] oboje si dibi prevede na to spravne pro danou DB. Ja pouzivam []
// takze:
dibi::query('SELECT [a.xyz], [b.abc] FROM [table_a] AS a, [table_b] b');
před 11 lety
- Jakub Šulák
- Člen | 223
Jasně, to vím – já ale řeším to, jak zapsat to [table_a] AS a tak, že to generuji z pole. Viz moje druhá ukázka zdrojáku. Když člověk neví, z jakých tabulek se bude sql dotaz sestávat.
před 11 lety
- phx
- Člen | 652
No pokud nevis z jakych tabulek budes vypisovat tak proc jim davat alias,
kdyz vetsinou bude asi jen SELECT * FROM ...
.
Jinak abych rekl pravdu tak nevim. Jedine udelat nejaky predzpracovani a preves to na pole, ktere tam potom vlozis modifikatorem %ex.
před 11 lety
- Jakub Šulák
- Člen | 223
No já jen jestli neexistuje možnost zápisu:
<?php
dibi::test('SELECT a.xyz, b.abc FROM %n',array('table_a'=>'a','table_b'=>'b'));
// vysledek: SELECT a.xyz, b.abc FROM table_a AS a, table_b AS b
?>
Přijde mi to takto asi „nejhezčí“. Bylo by fajn to někdy do dibi přidat… no to je fuk, nebudu mít aliasy:-).
Ale ještě jeden dotaz:
<?php
$tables = array('table_1','table_2');
dibi::select('*')
->from($tables)
->execute();
?>
Tabulky se vloží ve formátu ‚table1‘ – což udělá
chybu (správně table_1
). To beru spíš jako chybku… Nepomůže
ani $tables = array(‚[table1]‘,‚[table2]‘). Nebo
je jiná syntaxe?
před 11 lety
- David Grudl
- Nette Core | 6806
FROM %n',array('table_a'=>'a','table_b'=>'b')
by se jako
FROM table_a AS a, table_b AS b
generovat mohlo, doplním do
další revize. Stejně tak chování
dibi::select('*')->from($tables)
.
před 11 lety
- Jakub Šulák
- Člen | 223
Super, díky.