Re: En dato-liste med tomme poster
  Home FAQ Contact Sign in
dk.edb.database only
 
Advanced search
POPULAR GROUPS

more...

dk.edb.database Profile…
 Up
Re: En dato-liste med tomme poster         


Author: Troels Arvin
Date: Mar 9, 2008 14:53

On Sun, 09 Mar 2008 20:01:07 +0100, Thorkil Olesen wrote:
> Den eneste måde, jeg kan regne ud, er at oprette en kalender-tabel med
> alle datoer, og bruge en LEFT JOIN.

Jeg tror, det er en løsning, man ser mange steder, og den er i og for sig
fin.

(Man kunne godt ønske sig, at der i databaser var en række "leksikon"-
tabeller med forskellige kalendre, landekode/tidszone/valuta/...-
mappings, m.v. Evt. implementeret som virtuelle tabeller, der på "lazy"
vis udfoldede sig efter behov.)
> Mit næste problem er at lave det om til et view, men følgende vil ikke
> virke:
>
> SELECT * FROM kalender LEFT JOIN data ON kalender.dato = data.dato
> WHERE kalender.dato BETWEEN [startdato] AND [slutdato] AND ...[kriterier
> i data-tabellen]... ORDER BY kalender.dato

Hvilken fejlmeddelelse får du? Noget, der lige springer i øjnene er ORDER
BY, som ikke rigtig giver mening i et view.
Show full article (0.97Kb)
3 Comments
Re: En dato-liste med tomme poster         


Author: Thorkil Olesen
Date: Mar 11, 2008 17:16

Troels Arvin wrote:
> On Sun, 09 Mar 2008 20:01:07 +0100, Thorkil Olesen wrote:
>> Den eneste måde, jeg kan regne ud, er at oprette en kalender-tabel med
>> alle datoer, og bruge en LEFT JOIN.
>
> Jeg tror, det er en løsning, man ser mange steder, og den er i og for sig
> fin.

OK.
> (Man kunne godt ønske sig, at der i databaser var en række "leksikon"-
> tabeller med forskellige kalendre, landekode/tidszone/valuta/...-
> mappings, m.v. Evt. implementeret som virtuelle tabeller, der på "lazy"
> vis udfoldede sig efter behov.)

Ja, netop. Det må vi ønske hos udviklerne...
Show full article (1.46Kb)
no comments
Re: En dato-liste med tomme poster         


Author: Jens Gyldenkærne Clausen
Date: Mar 12, 2008 06:54

Thorkil Olesen skrev:
> Fejlen i ovenstående er, at hvis der for en dato eksisterer en
> post, som ikke opfylder kriterierne, så kommer den med i
> JOIN'et, men blive udelukket af WHERE-udtrykket. Datoen falder
> derfor helt ud i resultatet.

Hvis kriterierne for data-tabellen er konstante, kan de lægges ind
før viewet:

CREATE VIEW ok_data AS
SELECT * FROM data
WHERE [...datakriterier...]

CREATE VIEW kal_data AS
SELECT * FROM kalender LEFT JOIN ok_data
ON kalender.dato = ok_data.dato

Alternativt kan du bruge et flag til at markere datamatch:

SELECT CASE WHEN [datakriterier] THEN 1 ELSE 0 END AS datamatch, *
FROM kal_data
WHERE dato BETWEEN [startdato] and [slutdato]

(ovenstående er MSSQL-syntaks, men jeg gætter på at postgreSQL har
noget tilsvarende)
Show full article (1.01Kb)
no comments
Re: En dato-liste med tomme poster         


Author: Thorkil Olesen
Date: Mar 13, 2008 15:16

Jens Gyldenkærne Clausen wrote:
> Thorkil Olesen skrev:
>
>> Fejlen i ovenstående er, at hvis der for en dato eksisterer en
>> post, som ikke opfylder kriterierne, så kommer den med i
>> JOIN'et, men blive udelukket af WHERE-udtrykket. Datoen falder
>> derfor helt ud i resultatet.
>
> Hvis kriterierne for data-tabellen er konstante, kan de lægges ind
> før viewet:

Det er de ikke :-(
Show full article (1.01Kb)
no comments