Autor Téma: Posledný deň v mesiaci - prečo tam je RDB$DATABASE  (Přečteno 153 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3081
  • Karma: 29
    • Verze Delphi: XE7 professional
Na internete som našiel
Kód: [Vybrat]
(SELECT D.PERIOD - EXTRACT (DAY FROM D.PERIOD) + 32 -
  EXTRACT (DAY FROM (D.PERIOD - EXTRACT (DAY FROM D.PERIOD) + 32)) FROM RDB$DATABASE) DATETO
ale ide to ja v tejto forme
Kód: [Vybrat]
D.PERIOD - EXTRACT (DAY FROM D.PERIOD) + 32 -
  EXTRACT (DAY FROM (D.PERIOD - EXTRACT (DAY FROM D.PERIOD) + 32))  DATETO
V tabuľke RDB$DATABASE sú základné informácie o DB a má  vždy len jeden záznam. Nevidím dôvod na jej použitie. V pôvodnom návrhu sa nahodí plán "NATURAL". Čo asi nevadí ohľadom na skutočnosť, že tam je len jeden záznam.
Nie je tu nejaká zrada o ktorej neviem?
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Miroslav Baláž

  • Plnoletý
  • ***
  • Příspěvků: 119
  • Karma: 4
    • Verze Delphi: D1,2,3,4,7,2005,2009, XE8,S,B,T10.2.2 Pro
Re:Posledný deň v mesiaci - prečo tam je RDB$DATABASE
« Odpověď #1 kdy: 31-12-2017, 12:41:58 »
Na internete som našiel
..
ale ide to ja v tejto forme
..
Nie je tu nejaká zrada o ktorej neviem?
Narýchlo: Nie je to tým, že SQL akceptuje príkaz aj bez tabuľky? Napríklad Access:
Kód: MySQL [Vybrat]
práve teraz vrátilo  31.12.2017  12:38:05
No a ak by som použil hociakú tabuľku, tak výsledok by bol rovnaký. Lenže vypísaný toľkokrát, koľko je v tabuľke riadkov. Takže pre rovnaký výsledok:
Kód: MySQL [Vybrat]
  1. SELECT TOP 1 now from mojaTabulka

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3081
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Posledný deň v mesiaci - prečo tam je RDB$DATABASE
« Odpověď #2 kdy: 31-12-2017, 12:49:54 »
Keď sa na to lepšie pozrieš, tak vidíš, že sa tam pracujem len s jediným dátumom. Preto mi tam tá tabuľka zavadzia. Veď je to čistý výraz bez akejkoľvek inej potreby/pomôcky.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 3081
  • Karma: 29
    • Verze Delphi: XE7 professional
Re:Posledný deň v mesiaci - prečo tam je RDB$DATABASE
« Odpověď #3 kdy: 31-12-2017, 13:08:26 »
Hm, asi to bude tým, že ukážka vracia posledný dátum ako samostatný SELECT. Keď sa to použije v rámci iného SELECT-u, tak tá systémová tabuľka stráca na význame. Nepotrebujem SELECT.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online pf1957

  • Padawan
  • ******
  • Příspěvků: 1961
  • Karma: 101
    • Verze Delphi: D2007, XE3, DX10
Re:Posledný deň v mesiaci - prečo tam je RDB$DATABASE
« Odpověď #4 kdy: 31-12-2017, 16:19:17 »
Keď sa na to lepšie pozrieš, tak vidíš, že sa tam pracujem len s jediným dátumom. Preto mi tam tá tabuľka zavadzia. Veď je to čistý výraz bez akejkoľvek inej potreby/pomôcky.
Kvuli tomu to je: SQL select ma standardne formu:
Kód: SQL [Vybrat]
  1. SELECT <neco> FROM <odnekud>
  2.  
a neumi normalne vratit vyraz (pokud ano, tak je to nejaka nestandardni, mistne zpatlana zalezitost). Takze RDB$DATABASE misto <odnekud> zajisti, ze result set bude obsahovat prave jeden zaznam a v tom zaznamu bude vracen vysledek vyrazu

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Kolik je šest plus čtyři (slovem):