Witam
Wiec tak : mam 4 pola data1-data4 gdzie wprowadzam mniej wiecej takie wartosci :
Rekord 1 :
data1:2010-01-01
data2:2010-04-03
data3:2010-07-04
data4:2010-10-02
Rekord 2 :
data1:2010-01-02
data2:2010-05-01
data3:2010-08-16
data4:2010-12-02
Rekord 3:
data1:2010-02-01
data2:2010-08-02
Chcialbym stworzyc kwerende ktore wyrzuci mi np daty styczniowe (bez reszty dat) czyli powinno stworzyc
Rekord 1 :
data1:2010-01-01
Rekord 2 :
data1:2010-01-02
Sierpien :
Rekord 2 :
data3:2010-08-16
Rekord 3:
data2:2010-08-02
Zawsze wywala mi reszte dat co srednio mnie interesuje (bo akurat chodzi o daty z konkretnego miesiaca)
Prosze o jakies pomysly
Pozdrawiam
Kwerenda - 4 pola daty
Kwerenda - 4 pola daty
OpenOffice 2.4.1 + Debian 2.6.26
Re: Kwerenda - 4 pola daty
,,Równorzędne '' traktowanie wyników z różnych kolumn jest nienaturalne dla baz danych.
Jeżeli widzisz taką konieczność, to być może masz bardzo specyficzny problem, ale najprawdopodobniej wiąże się to z wadą projektu bazy danych.
Takie zapytanie da się zbudować w oparciu o podzapytania skorelowane, ale stopień jego komplikacji będzie niewspółmierny w stosunku do złożoności samego problemu.
Łatwiej będzie zbudować zapytanie z konstrukcją warunkową, np. casewhen(...), zwracającą albo datę, albo NULL.
Jeżeli widzisz taką konieczność, to być może masz bardzo specyficzny problem, ale najprawdopodobniej wiąże się to z wadą projektu bazy danych.
Takie zapytanie da się zbudować w oparciu o podzapytania skorelowane, ale stopień jego komplikacji będzie niewspółmierny w stosunku do złożoności samego problemu.
Łatwiej będzie zbudować zapytanie z konstrukcją warunkową, np. casewhen(...), zwracającą albo datę, albo NULL.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Kwerenda - 4 pola daty
Mozesz mi podpowiedziec jak mniej wiecej zrobic to uzywajac tego casewhen?Jan_J pisze:,,Równorzędne '' traktowanie wyników z różnych kolumn jest nienaturalne dla baz danych.
Jeżeli widzisz taką konieczność, to być może masz bardzo specyficzny problem, ale najprawdopodobniej wiąże się to z wadą projektu bazy danych.
Takie zapytanie da się zbudować w oparciu o podzapytania skorelowane, ale stopień jego komplikacji będzie niewspółmierny w stosunku do złożoności samego problemu.
Łatwiej będzie zbudować zapytanie z konstrukcją warunkową, np. casewhen(...), zwracającą albo datę, albo NULL.
OpenOffice 2.4.1 + Debian 2.6.26
Re: Kwerenda - 4 pola daty
Jakoś tak:tylko jak sprawdzam, to się okazuje, że casewhen konwertuje zarówno datę, jak NULL na typ INTEGER. Datę to jeszcze-jeszcze, ale NULL-a konwertować: zgroza. Porządna baza tak nie śmie.
Workaround dla baz nie do końca poważnych: zamiast data1 w 2 argumencie casewhen wstaw reprezentujący ją tekst składany z jej komponentów, czyli EXTRACT( YEAR FROM data1 ) || '-' || EXTRACT( MONTH FROM data1 ) || '-' || EXTRACT( DAY FROM data1 ). Zamiast NULL wstaw pusty tekst, czyli ''.
Kod: Zaznacz cały
SELECT
casewhen(EXTRACT(MONTH FROM data1)=4, data1, NULL) as "Pole1",
-- itd
FROM twoja_tabela;
Workaround dla baz nie do końca poważnych: zamiast data1 w 2 argumencie casewhen wstaw reprezentujący ją tekst składany z jej komponentów, czyli EXTRACT( YEAR FROM data1 ) || '-' || EXTRACT( MONTH FROM data1 ) || '-' || EXTRACT( DAY FROM data1 ). Zamiast NULL wstaw pusty tekst, czyli ''.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)