Oznámení
Oracle, DibiDataSource a metoda count()
před 8 lety

- radas
- Člen | 210
Ahoj, objevil jsem problém s metodou count() v DibiDataSource, která se
projevuje při použití nad Oraclem. Oraclu tam zkrátka vadí to
AS t. Když jsem tuto část odstranil, tak problém není. Když
ji tam ponechám, Oracle hlásí, že „příkaz SQL není řádně
ukončen“.
PHP 5.2.12, dibi 1.5 (ale týká se to i předchozích verzí), Oracle 11g
před 8 lety

- paranoiq
- Člen | 388
na druhou stranu třeba MySQL aliasování poddotazu vyžaduje :[
před 8 lety

- radas
- Člen | 210
Leda to podle použitého driveru oifovat, nic moc řešení, ale mělo by fungovat…
před 8 lety

- Milo
- Nette Core | 1119
PostgreSQL aliasování subselectu v klauzuli FROM také
vyžaduje. Vynecháním AS se to dá patchnout, funguje na MySQL,
PostgreSQL a Oracle.
'SELECT COUNT(*) FROM (' . $this->__toString() . ') t'
Když to někdo ověří i na jiných DB, pošlu patch na github.
Editoval Milo (15. 2. 2011 9:43)
před 8 lety

- paranoiq
- Člen | 388
už mi došlo proč tomu tak je. AS u aliasů tabulek v SQL
standardu není, zatímco u aliasů sloupců/výrazů ano. tolerantní
databáze umožňují v obou případech zápis s AS
i bez něj
spravně a kompatibilně by mělo být:
SELECT
col1 AS c,
col2 AS d
FROM table1 t
před 8 lety

- David Grudl
- Nette Core | 6806
Jen se bojím, které databáze zařvou, když to AS odstraním.
před 8 lety

- Milo
- Nette Core | 1119
Co jsem zkusil bez AS tak to jde na:
PostgreSql
7.4.28
8.0.24
8.1.20
8.2.16
8.3.10
8.4.3
9.0.0
MySQL
5.0.51a-24+lenny4
Oracle
Oracle9i Enterprise Edition Release 9.2.0.5.0
před 8 lety

- radas
- Člen | 210
Bez AS to jede i na Oracle 11g Standard Edition Release 11.2.0.1.0.