/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Underforespørgsel
Fra : Ukendt


Dato : 02-10-07 17:17


Hej NG

Jeg sidder med en tabel, med oplysninger om forskellige fejl...
Tabellen indeholder felterne : FraktionNavn, Dato, Fejl.
Jeg har janket længe med dette problem...
Jeg forsøger at lave en query, som skal udvælge i en bestemt
tidsperiode(Dato), og derefter gruppere de udvalgte data på FraktionNavn og
summere Fejl.
Jeg kan ikke få lavet sqlsætningen så det virker...det er GROUP BY, der
volder problemer...

Det er disse 2 qry, jeg skal have kørt sammen...

Her udvælger jeg i tidsperioden - det virker ok...
Sql="SELECT * FROM tblAntalFejl_Periode WHERE Dato>=#" & FraDato1 & "# AND
Dato<=#" & TilDato1 & "#"

Så vil jeg gerne udvælge videre i ovenstående - det er her problemet er...
Sql="SELECT FraktionNavn, Fejl GROUP BY FraktionNavn"

Er det ikke noget med nested selects ...

Har i et forslag, og gerne et lille eksempel...

Hilsen
Bjarne
"Every day new surprises"



 
 
Lasse Skovsager (02-10-2007)
Kommentar
Fra : Lasse Skovsager


Dato : 02-10-07 22:11

bsn wrote:
> Her udvælger jeg i tidsperioden - det virker ok...
> Sql="SELECT * FROM tblAntalFejl_Periode WHERE Dato>=#" &
> FraDato1 & "# AND Dato<=#" & TilDato1 & "#"
>
> Så vil jeg gerne udvælge videre i ovenstående - det er her
> problemet er... Sql="SELECT FraktionNavn, Fejl GROUP BY
> FraktionNavn"
> Er det ikke noget med nested selects ...
>
> Har i et forslag, og gerne et lille eksempel...
>
> Hilsen
> Bjarne
> "Every day new surprises"
Har du ikke glemt at skrive hvilken tabel du vil selecte fra?

Sql="SELECT FraktionNavn, Fejl *FROM [Tabelnavn]* GROUP BY
FraktionNavn"




--
Lasse Skovsager
www.hartr.dk - vikingegruppe i Hardsyssel


Ukendt (02-10-2007)
Kommentar
Fra : Ukendt


Dato : 02-10-07 23:09


"Lasse Skovsager" <lasse@skovsager.dk> skrev >> Her udvælger jeg i
tidsperioden - det virker ok...
>> Sql="SELECT * FROM tblAntalFejl_Periode WHERE Dato>=#" &
>> FraDato1 & "# AND Dato<=#" & TilDato1 & "#"
>>
>> Så vil jeg gerne udvælge videre i ovenstående - det er her
>> problemet er... Sql="SELECT FraktionNavn, Fejl GROUP BY
>> FraktionNavn"
>> Er det ikke noget med nested selects ...
>>
>> Har i et forslag, og gerne et lille eksempel...
>>
>> Hilsen
>> Bjarne
>> "Every day new surprises"
> Har du ikke glemt at skrive hvilken tabel du vil selecte fra?

Jo måske...
Min ide er først at udvælge på Dato,
og derefter ( måske i en underforespørgsel ) at udvælge Fraktion og Fejl ud
fra den første forespørgsel...
Det er denne del, som volder besvær...

>
> Sql="SELECT FraktionNavn, Fejl *FROM [Tabelnavn]* GROUP BY FraktionNavn"

Det er sådan set en sammenskrivning af disse 2 forespørgsler, jeg tror er
løsningen...
Eller hva...

Bjarne



Claus Marcussen (02-10-2007)
Kommentar
Fra : Claus Marcussen


Dato : 02-10-07 23:29

bsn wrote in dk.edb.internet.webdesign.serverside.asp:

> Hej NG
>
> Her udvælger jeg i tidsperioden - det virker ok...
> Sql="SELECT * FROM tblAntalFejl_Periode WHERE Dato>=#" & FraDato1 & "# AND
> Dato<=#" & TilDato1 & "#"
>
> Så vil jeg gerne udvælge videre i ovenstående - det er her problemet er...
> Sql="SELECT FraktionNavn, Fejl GROUP BY FraktionNavn"
>

Hej.

Jeg antager at Fejl er numerisk. Så må det være :

SELECT FraktionNavn, Sum(Fejl)
FROM tblAntalFejl_Periode
WHERE Dato>= FraDato1 AND Dato<= TilDato1
GROUP BY FraktionNavn

Syntaks er måske ikke korrekt, den må du lige selv tjekke. Er mainframe
programmør, hvor ting kan være lidt anderledes. På trods af at at SQL betyder
Standard Query Languge.

Hilsen Claus

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (03-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-10-07 00:12

Claus Marcussen skrev:

> SELECT FraktionNavn, Sum(Fejl)
> FROM tblAntalFejl_Periode
> WHERE Dato>= FraDato1 AND Dato<= TilDato1
> GROUP BY FraktionNavn


Syntaksen skulle være o.k. - jeg vil dog lige slå et slag for
BETWEEN-operatoren der i mine øjne går kriteriet noget lettere at
overskue:

SELECT FraktionNavn, Sum(Fejl) As Fejlsum
FROM tblAntalFejl_Periode
WHERE Dato BETWEEN FraDato1 AND TilDato1
GROUP BY FraktionNavn
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Claus Marcussen (03-10-2007)
Kommentar
Fra : Claus Marcussen


Dato : 03-10-07 00:19


> Syntaksen skulle være o.k. - jeg vil dog lige slå et slag for
> BETWEEN-operatoren der i mine øjne går kriteriet noget lettere at
> overskue:
>
> SELECT FraktionNavn, Sum(Fejl) As Fejlsum
> FROM tblAntalFejl_Periode
> WHERE Dato BETWEEN FraDato1 AND TilDato1
> GROUP BY FraktionNavn

Kender den godt - var i tvivl om det var mainframe agtigt. Så vidt
jeg ved er der lidt performance på mainframe ved at anvende den.
Selv om det ikke høre hjemme her, så vil jeg gerne have kommentarer
på dette.

Det var kun hensyn til om at spørger selv skulle syntaks tjekke der
fik mig til at undlade den.

Hilsen Claus

Og tak til Jens for en god kommentar.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ukendt (03-10-2007)
Kommentar
Fra : Ukendt


Dato : 03-10-07 00:50


"Claus Marcussen" <claus.ingendyr.tiger.marcussen@mail.dk> skrev i en
meddelelse news:4702c61c$0$90267$14726298@news.sunsite.dk...
> bsn wrote in dk.edb.internet.webdesign.serverside.asp:
>
>> Hej NG
>>
>> Her udvælger jeg i tidsperioden - det virker ok...
>> Sql="SELECT * FROM tblAntalFejl_Periode WHERE Dato>=#" & FraDato1 & "#
>> AND
>> Dato<=#" & TilDato1 & "#"
>>
>> Så vil jeg gerne udvælge videre i ovenstående - det er her problemet
>> er...
>> Sql="SELECT FraktionNavn, Fejl GROUP BY FraktionNavn"
>>
>
> Hej.
>
> Jeg antager at Fejl er numerisk. Så må det være :

Korrekt

> SELECT FraktionNavn, Sum(Fejl)
> FROM tblAntalFejl_Periode
> WHERE Dato>= FraDato1 AND Dato<= TilDato1
> GROUP BY FraktionNavn

Giver fejlen:
Fejltype:
Microsoft JET Database Engine (0x80040E10)
Der er ikke angivet nogen værdi for en eller flere krævede parametre.
/snap/statistik.asp, line 38 <---- linje med RS.Open Sql

Bjarne





Claus Marcussen (03-10-2007)
Kommentar
Fra : Claus Marcussen


Dato : 03-10-07 01:02

> Giver fejlen:
> Fejltype:
> Microsoft JET Database Engine (0x80040E10)
> Der er ikke angivet nogen værdi for en eller flere krævede parametre.
> /snap/statistik.asp, line 38 <---- linje med RS.Open Sql

Hej.

Som jeg skrev :

> Syntaks er måske ikke korrekt, den må du lige selv tjekke. Er mainframe
> programmør, hvor ting kan være lidt anderledes. På trods af at at SQL
> betyder Standard Query Languge.

Når du stringer den sammen, så skal du selvfølgelige indsætte FraDato1 og
TilDato1 i sætningen.

Hilsen Claus

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Ukendt (03-10-2007)
Kommentar
Fra : Ukendt


Dato : 03-10-07 08:03


"Claus Marcussen" <claus.ingendyr.tiger.mail@mail.dk> skrev
> Som jeg skrev :
>
>> Syntaks er måske ikke korrekt, den må du lige selv tjekke. Er mainframe
>> programmør, hvor ting kan være lidt anderledes. På trods af at at SQL
>> betyder Standard Query Languge.
>
> Når du stringer den sammen, så skal du selvfølgelige indsætte FraDato1 og
> TilDato1 i sætningen.

Ja undskyld - det var midt om natten - brain gone sleep...:)

Her er den Sql, som virker:

Sql="SELECT FraktionID, FraktionNummer_, FraktionNavn, Count(Fejl) As
Fejlsum" & _
" FROM qryTest WHERE Dato>=#" & FraDato1 & "# AND Dato<=#" & TilDato1 & "#"
& _
" GROUP BY FraktionID, FraktionNummer_, FraktionNavn"

Mange tak for svar...og tålmodighed...
Bjarne



Jørn Andersen (03-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 03-10-07 00:32

On Tue, 2 Oct 2007 18:17:16 +0200, "bsn" <bsnSNABELAoncableDOTdk> wrote:

>Jeg sidder med en tabel, med oplysninger om forskellige fejl...
>Tabellen indeholder felterne : FraktionNavn, Dato, Fejl.
>Jeg har janket længe med dette problem...
>Jeg forsøger at lave en query, som skal udvælge i en bestemt
>tidsperiode(Dato), og derefter gruppere de udvalgte data på FraktionNavn og
>summere Fejl.

Egentlig er det et database-spm., som hører til i en af
database-grupperne

>Jeg kan ikke få lavet sqlsætningen så det virker...det er GROUP BY, der
>volder problemer...

Du skal nok bruge HAVING i stedet for WHERE, når du bruger GROUP BY -
fx:

SELECT tblFejl.FraktionNavn, tblFejl.Fejl, tblFejl.Dato
FROM tblFejl
GROUP BY tblFejl.FraktionNavn, tblFejl.Fejl, tblFejl.Dato
HAVING (((tblFejl.Dato)<DateSerial(2008,1,1) AND
(tblFejl.Dato)>DateSerial(2007,4,30)))
ORDER BY tblFejl.FraktionNavn DESC, tblFejl.Fejl;

(Dette er lavet til en MS Access - hvis det er en anden database, har
den sikkert andre dato-funktioner.)

<snip>

>Er det ikke noget med nested selects ...

Jo, man kan godt lave sub-selects, men om det er specielt effektivt i
dit tilfælde ved jeg ikke.

Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (03-10-2007)
Kommentar
Fra : Ukendt


Dato : 03-10-07 08:00


"Jørn Andersen" <jorn@jorna.dk> skrev
> Egentlig er det et database-spm., som hører til i en af
> database-grupperne

Jaaa, men det skal virke i asp...
Se svar på løsning i anden mail...
Tak for svar...

Hilsen
Bjarne



Jens Gyldenkærne Cla~ (03-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-10-07 12:47

bsn skrev:

>> Egentlig er det et database-spm., som hører til i en af
>> database-grupperne

> Jaaa, men det skal virke i asp...

Det er sådan set underordnet. Det er samme forespørgsel der skal
bruges, uanset om den kaldes fra asp eller direkte i Access.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (04-10-2007)
Kommentar
Fra : Ukendt


Dato : 04-10-07 23:39


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev
> bsn skrev:
>
>>> Egentlig er det et database-spm., som hører til i en af
>>> database-grupperne
>
>> Jaaa, men det skal virke i asp...
>
> Det er sådan set underordnet. Det er samme forespørgsel der skal
> bruges, uanset om den kaldes fra asp eller direkte i Access.

Ok...og tak for svaret...
Bjarne



Jens Gyldenkærne Cla~ (03-10-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-10-07 12:46

Jørn Andersen skrev:

> Du skal nok bruge HAVING i stedet for WHERE, når du bruger
> GROUP BY - fx:

Det kommer helt an på hvad han skal have ud.


Med WHERE sætter man et kriterium op for de rækker der indgår i
grupperingen. Med HAVING sætter man kriterier for de grupperede
værdier.


> SELECT tblFejl.FraktionNavn, tblFejl.Fejl, tblFejl.Dato
> FROM tblFejl
> GROUP BY tblFejl.FraktionNavn, tblFejl.Fejl, tblFejl.Dato
> HAVING (((tblFejl.Dato)<DateSerial(2008,1,1) AND
> (tblFejl.Dato)>DateSerial(2007,4,30)))


Her bruger du slet ikke grupperingen til noget (der er ingen
aggregerede værdier med).

Når spørgeren ønsker at gruppere værdier i et bestemt dato-
interval, er WHERE-udgaven korrekt.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (04-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 04-10-07 00:52

On Wed, 03 Oct 2007 13:45:58 +0200, "Jens Gyldenkærne Clausen"
<jens@gyros.invalid> wrote:

>Med WHERE sætter man et kriterium op for de rækker der indgår i
>grupperingen. Med HAVING sætter man kriterier for de grupperede
>værdier.

Tak for afklaringen. Jeg er ikke specielt stærk i SQL, og jeg lavede
bare en copy-paste fra Access' QBE-gitter


Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408918
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste