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.