/ Forside/ Teknologi / Udvikling / SQL / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
datogeneratorpseudotabel
Fra : leifnel
Vist : 455 gange
50 point
Dato : 08-05-02 17:24

(MySql)
Jeg har en tabel med ting med en dato på. Lad os kalde den FOLK, feltet FDAG
Nu laver jeg "select FDAG,count(NAVN) from FOLK where FDAG between '2002-04-01' and '2002-04-05' group by 1"
Resultat:
2002-04-02 3
2002-04-05 1

Men jeg ville gerne have alle datoer også dem med 0. Hvis man havde en tabel med alle datoer, ALLDATES kunne man lave
"select DATO,count(NAVN) from ALLDATES left join FOLK on (ALLDATES.DATO=FOLK.FDAG) where DATO between '2002-04-01' and '2002-04-05'"
og få
2002-04-01 0
2002-04-02 3
2002-04-03 0
2002-04-04 0
2002-04-05 1

Kan man det?
Eller må man i php lave noget med en løkke, der for $n=0 til $slutdato-$startdato laver en
"select date_add($startdato, interval $n days)...

Eller råt og brutalt lave en tabel med alle datoer i et vist interval?

Leif




 
 
Kommentar
Fra : leifnel


Dato : 10-05-02 10:05

Det virker netop ikke, fordi jeg gerne vil have også de datoer, hvor der ikke er nogen hits.

Kommentar
Fra : Nyhedsbruger


Dato : 10-05-02 17:34

Hej Leif,

det er en klassiker, du har fat i... ;)

SQL bygger jo på mængdelære, og hvis der ikke findes nogen data, så kommer
der ingen rækker ud af det... Når du alligevel roder med PHP vil jeg tro at
det nemmeste er at lave et associativt array, hvori du på forhånd
initialiserer alle relevante datoers resultatværdi til 0, hvorefter du
opdaterer med resultaterne af din select.

vh. Jørgen

"leifnel" <leifnel.news@kandu.dk> wrote in message
news:kiCC8.2717$ek6.84855@news010.worldonline.dk...
> (MySql)
> Jeg har en tabel med ting med en dato på. Lad os kalde den FOLK, feltet
> FDAG
> Nu laver jeg "select FDAG,count(NAVN) from FOLK where FDAG between
> '2002-04-01' and '2002-04-05' group by 1"
> Resultat:
> 2002-04-02 3
> 2002-04-05 1
>
> Men jeg ville gerne have alle datoer også dem med 0. Hvis man havde en
> tabel med alle datoer, ALLDATES kunne man lave
> "select DATO,count(NAVN) from ALLDATES left join FOLK on
> (ALLDATES.DATO=FOLK.FDAG) where DATO between '2002-04-01' and
> '2002-04-05'"
> og få
> 2002-04-01 0
> 2002-04-02 3
> 2002-04-03 0
> 2002-04-04 0
> 2002-04-05 1
>
> Kan man det?
> Eller må man i php lave noget med en løkke, der for $n=0 til
> $slutdato-$startdato laver en
> "select date_add($startdato, interval $n days)...
>
> Eller råt og brutalt lave en tabel med alle datoer i et vist interval?
>
> Leif
>
>
>
>
> --
> Leveret af:
> http://www.kandu.dk/
> "Vejen til en hurtig løsning"
>



Kommentar
Fra : leifnel


Dato : 16-07-02 01:35

Spørgsmålet er ikke løst, og du skal ihvertfald ikke nasse point på det, zonker!

Kommentar
Fra : clausdanboe


Dato : 17-07-02 13:52

Hej
Alle gruppefunktioner pånær count(*) ignorerer Null-værdier.
Men jeg har to forslag, som måske kan få dig på rette spor:

1) Måske kan du løse det med at sætte decode funktionen uden om din count, f.eks. decode(count(NAVN),'', 0,count(NAVN))...
2) Har du prøvet med null value, nvl(count(NAVN),0), funktionen?

Hilsen Claus

Kommentar
Fra : kaasgaard


Dato : 30-07-02 02:57

Har du løst problemet?

Ellers kan du jo som et lille quick'n'dirty fix lave en funktion, der checker sidste dato, der er indtastet en post og så frem til dags dato (evt. - 1) indsætte poster med værdien 0 (ofc. med et par kontroller :)

Ellers kan du som du er indepå lave et lille PHP script, der opretter alle dato'er fra nu og til du har lyst til at det slutter.

Håber det hjælper lidt.

// Martin

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407948
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste