|
| 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
| |
|
|