tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

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“.

viz API

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.