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

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
SQL
Fra : Pølle


Dato : 25-08-02 11:13

Hej NG

Hvis jeg har en database kun 2 felter nemlig "Komponent" og "Pris"

Denne database har følgende records:

Lampe, 3
Komtakt, 10
lampe, 2

Bemærk: Ovenstående record 1 og 3 er ens på nær 1 karakter.

Ønsker man så at summen (Pris) vil SQL'en se således ud:
SELECT DISTINCT Komponent, SUM(Pris)
FROM "Komponent.db"
GROUP BY Komponent
ORDER BY Komponent

Resultater bliver:
Lampe, 3
Komtakt, 10
lampe, 2

Hvordan kan man få en TQuery til at ignorere store/små bogstaver

Mvh
Pølle




 
 
David A. D. Konrad (25-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 25-08-02 11:35

"Pølle" <No@Name.dk> skrev i en meddelelse news:akaakc$2s0$1@sunsite.dk...

> Hvis jeg har en database kun 2 felter nemlig "Komponent" og "Pris"
>
> Denne database har følgende records:
>
> Lampe, 3
> Komtakt, 10
> lampe, 2
>
> Bemærk: Ovenstående record 1 og 3 er ens på nær 1 karakter.
>
> Ønsker man så at summen (Pris) vil SQL'en se således ud:
> SELECT DISTINCT Komponent, SUM(Pris)
> FROM "Komponent.db"
> GROUP BY Komponent
> ORDER BY Komponent
>
> Resultater bliver:
> Lampe, 3
> Komtakt, 10
> lampe, 2
>
> Hvordan kan man få en TQuery til at ignorere store/små bogstaver

Har du prøvet uden distintct? Har du prøvet select distinct
lower(komponent), sum(pris)?



Mikael Rune Jensen (25-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 25-08-02 19:48

Hejsa

> > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > SELECT DISTINCT Komponent, SUM(Pris)
> > FROM "Komponent.db"
> > GROUP BY Komponent
> > ORDER BY Komponent

> Har du prøvet uden distintct? Har du prøvet select distinct
> lower(komponent), sum(pris)?


Distinct skulle være ganske unødvendig i og med at du grupperer på
Komponent. Hvilken database benytter du?
Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
reducere performance af din forespørgsel - særligt hvis det er et knap så
prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)

Mvh
Mikael Rune Jensen

--
Mikael Rune Jensen
Department of Computer Science
Aalborg University
http://www.cs.auc.dk/~mrj



David A. D. Konrad (25-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 25-08-02 20:01

"Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
news:3d69263c$0$1441

> Distinct skulle være ganske unødvendig i og med at du grupperer på
> Komponent. Hvilken database benytter du?
> Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> reducere performance af din forespørgsel - særligt hvis det er et knap så
> prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)

DBMS er et flot begreb at bruge om "Pølle's" paradox-tabeller )



Pølle (25-08-2002)
Kommentar
Fra : Pølle


Dato : 25-08-02 21:37

Hej Michael

"Distinct" er noget programmet "Database Desktop" laver automatisk og det
hjælper ikke at fjerne "Distinct".
Jeg bruger Paradox 7 som database.

Mvh
Pølle


"Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> Hejsa
>
> > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > SELECT DISTINCT Komponent, SUM(Pris)
> > > FROM "Komponent.db"
> > > GROUP BY Komponent
> > > ORDER BY Komponent
>
> > Har du prøvet uden distintct? Har du prøvet select distinct
> > lower(komponent), sum(pris)?
>
>
> Distinct skulle være ganske unødvendig i og med at du grupperer på
> Komponent. Hvilken database benytter du?
> Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> reducere performance af din forespørgsel - særligt hvis det er et knap så
> prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
>
> Mvh
> Mikael Rune Jensen
>
> --
> Mikael Rune Jensen
> Department of Computer Science
> Aalborg University
> http://www.cs.auc.dk/~mrj
>
>



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 07:05

Hejsa

> "Distinct" er noget programmet "Database Desktop" laver automatisk og det
> hjælper ikke at fjerne "Distinct".
> Jeg bruger Paradox 7 som database.

Hmm.. Jeg har godt nok aldrig arbejdet med Paradox, men vil det sige at man
ikke selv kan styre hvilken SQL man ønsker!? Altså hvis man laver en Group
By så indsættes der automatisk en Distinct?

Mvh.
Mikael Rune Jensen



> Mvh
> Pølle
>
>
> "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> > Hejsa
> >
> > > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > > SELECT DISTINCT Komponent, SUM(Pris)
> > > > FROM "Komponent.db"
> > > > GROUP BY Komponent
> > > > ORDER BY Komponent
> >
> > > Har du prøvet uden distintct? Har du prøvet select distinct
> > > lower(komponent), sum(pris)?
> >
> >
> > Distinct skulle være ganske unødvendig i og med at du grupperer på
> > Komponent. Hvilken database benytter du?
> > Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> > reducere performance af din forespørgsel - særligt hvis det er et knap

> > prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
> >
> > Mvh
> > Mikael Rune Jensen
> >
> > --
> > Mikael Rune Jensen
> > Department of Computer Science
> > Aalborg University
> > http://www.cs.auc.dk/~mrj
> >
> >
>
>



Pølle (25-08-2002)
Kommentar
Fra : Pølle


Dato : 25-08-02 21:46

Det er blot mig igen !!!

I øvrigt virker Lower() fint uden Sum(), men "Order By" virker ikke sammen
med Lower()

Dvs.
SELECT DISTINCT Lower(Komponent)
FROM "Komponent.db"
Virker fint

Hvorimod
SELECT DISTINCT Lower(Komponent)
FROM "Komponent.db"
Order BY Komponent

eller
SELECT DISTINCT Lower(Komponent)
FROM "Komponent.db"
Order BY Lower(Komponent)

IKKE virker

Mvh
Pølle




"Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> Hejsa
>
> > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > SELECT DISTINCT Komponent, SUM(Pris)
> > > FROM "Komponent.db"
> > > GROUP BY Komponent
> > > ORDER BY Komponent
>
> > Har du prøvet uden distintct? Har du prøvet select distinct
> > lower(komponent), sum(pris)?
>
>
> Distinct skulle være ganske unødvendig i og med at du grupperer på
> Komponent. Hvilken database benytter du?
> Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> reducere performance af din forespørgsel - særligt hvis det er et knap så
> prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
>
> Mvh
> Mikael Rune Jensen
>
> --
> Mikael Rune Jensen
> Department of Computer Science
> Aalborg University
> http://www.cs.auc.dk/~mrj
>
>



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 07:08

Hejsa

> Hvorimod
> SELECT DISTINCT Lower(Komponent)
> FROM "Komponent.db"
> Order BY Komponent
>
> eller
> SELECT DISTINCT Lower(Komponent)
> FROM "Komponent.db"
> Order BY Lower(Komponent)
>
> IKKE virker

Hmm.. Begge ovenstående forespørgsler lever op til SQL92 standarden..
Prøv at skrive flg. forespørgsle istedet (aner ikke om det virker i din DB,
men i "alm." DB'ere virker det ;)

SELECT DISTINCT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
ORDER BY mineKomponenter

Mvh.
Mikael




>
>
>
>
> "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> > Hejsa
> >
> > > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > > SELECT DISTINCT Komponent, SUM(Pris)
> > > > FROM "Komponent.db"
> > > > GROUP BY Komponent
> > > > ORDER BY Komponent
> >
> > > Har du prøvet uden distintct? Har du prøvet select distinct
> > > lower(komponent), sum(pris)?
> >
> >
> > Distinct skulle være ganske unødvendig i og med at du grupperer på
> > Komponent. Hvilken database benytter du?
> > Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> > reducere performance af din forespørgsel - særligt hvis det er et knap

> > prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
> >
> > Mvh
> > Mikael Rune Jensen
> >
> > --
> > Mikael Rune Jensen
> > Department of Computer Science
> > Aalborg University
> > http://www.cs.auc.dk/~mrj
> >
> >
>
>



Pølle (26-08-2002)
Kommentar
Fra : Pølle


Dato : 26-08-02 09:40

Hej Michael

Det er dejligt, som du følger sagen op.

Dit forslag:
SELECT DISTINCT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
ORDER BY mineKomponenter
virket fint og giver resultater af record: aaa, AAA, bbb
aaa
bbb
hvorimod
SELECT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
ORDER BY mineKomponenter
gi'r resultatet:
aaa
aaa
bbb
"DISTINCT " er nødvendigt, for at f.eks. "aaa" forekommer 1 gang.
-------------------------------------------------------------
Nedenstående:
SELECT DISTINCT Komponent
FROM "Komponent.db"
GROUP BY Komponenter
ORDER BY Komponenter
'kører' fint - OG
SELECT DISTINCT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
ORDER BY mineKomponenter
er også OK - MEEEN
SELECT DISTINCT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
GROUP BY mineKomponenter <= eneste ændring
ORDER BY mineKomponenter
gi'r fejlmeddelelsen: "Invalid field name" og der er jo nødvendigt med GROUP
BY, når SUM(Pris) tilføjes

Mvh
Pølle
------------------------------- OLD ---------------------------------
"Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
news:3d69c5a8$0$234$ba624c82@nntp03.dk.telia.net...
> Hejsa
>
> > Hvorimod
> > SELECT DISTINCT Lower(Komponent)
> > FROM "Komponent.db"
> > Order BY Komponent
> >
> > eller
> > SELECT DISTINCT Lower(Komponent)
> > FROM "Komponent.db"
> > Order BY Lower(Komponent)
> >
> > IKKE virker
>
> Hmm.. Begge ovenstående forespørgsler lever op til SQL92 standarden..
> Prøv at skrive flg. forespørgsle istedet (aner ikke om det virker i din
DB,
> men i "alm." DB'ere virker det ;)
>
> SELECT DISTINCT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
>
> Mvh.
> Mikael
>
>
>
>
> >
> >
> >
> >
> > "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> > news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> > > Hejsa
> > >
> > > > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > > > SELECT DISTINCT Komponent, SUM(Pris)
> > > > > FROM "Komponent.db"
> > > > > GROUP BY Komponent
> > > > > ORDER BY Komponent
> > >
> > > > Har du prøvet uden distintct? Har du prøvet select distinct
> > > > lower(komponent), sum(pris)?
> > >
> > >
> > > Distinct skulle være ganske unødvendig i og med at du grupperer på
> > > Komponent. Hvilken database benytter du?
> > > Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> > > reducere performance af din forespørgsel - særligt hvis det er et knap
> så
> > > prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
> > >
> > > Mvh
> > > Mikael Rune Jensen
> > >
> > > --
> > > Mikael Rune Jensen
> > > Department of Computer Science
> > > Aalborg University
> > > http://www.cs.auc.dk/~mrj
> > >
> > >
> >
> >
>
>



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 11:22

Hejsa

Prøv lige om flg forespørgsel virker:

SELECT Lower(Komponent) AS mineKomponenter, SUM(Pris)
FROM "Komponent.db"
GROUP BY mineKomponenter

Kan du godt skrive en Group By UDEN af have en Distinct-operator?!

Det skulle gerne give flg resultat (hvis man kigger på de tupler dy har i
dit oprindelige indlæg):

mineKomponenter| Pris
--------------------------|---------
lampe | 5
kontakt | 10


Hvis den forespørgsel gå godt så prøv at udvide den med en "ORDER BY
mineKomponenter"..

Mvh.
Mikael






"Pølle" <No@Name.dk> wrote in message news:akcphv$c36$1@sunsite.dk...
> Hej Michael
>
> Det er dejligt, som du følger sagen op.
>
> Dit forslag:
> SELECT DISTINCT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> virket fint og giver resultater af record: aaa, AAA, bbb
> aaa
> bbb
> hvorimod
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> gi'r resultatet:
> aaa
> aaa
> bbb
> "DISTINCT " er nødvendigt, for at f.eks. "aaa" forekommer 1 gang.
> -------------------------------------------------------------
> Nedenstående:
> SELECT DISTINCT Komponent
> FROM "Komponent.db"
> GROUP BY Komponenter
> ORDER BY Komponenter
> 'kører' fint - OG
> SELECT DISTINCT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> er også OK - MEEEN
> SELECT DISTINCT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> GROUP BY mineKomponenter <= eneste ændring
> ORDER BY mineKomponenter
> gi'r fejlmeddelelsen: "Invalid field name" og der er jo nødvendigt med
GROUP
> BY, når SUM(Pris) tilføjes
>
> Mvh
> Pølle
> ------------------------------- OLD ---------------------------------
> "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> news:3d69c5a8$0$234$ba624c82@nntp03.dk.telia.net...
> > Hejsa
> >
> > > Hvorimod
> > > SELECT DISTINCT Lower(Komponent)
> > > FROM "Komponent.db"
> > > Order BY Komponent
> > >
> > > eller
> > > SELECT DISTINCT Lower(Komponent)
> > > FROM "Komponent.db"
> > > Order BY Lower(Komponent)
> > >
> > > IKKE virker
> >
> > Hmm.. Begge ovenstående forespørgsler lever op til SQL92 standarden..
> > Prøv at skrive flg. forespørgsle istedet (aner ikke om det virker i din
> DB,
> > men i "alm." DB'ere virker det ;)
> >
> > SELECT DISTINCT Lower(Komponent) AS mineKomponenter
> > FROM "Komponent.db"
> > ORDER BY mineKomponenter
> >
> > Mvh.
> > Mikael
> >
> >
> >
> >
> > >
> > >
> > >
> > >
> > > "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> > > news:3d69263c$0$1441$ba624c82@nntp02.dk.telia.net...
> > > > Hejsa
> > > >
> > > > > > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > > > > > SELECT DISTINCT Komponent, SUM(Pris)
> > > > > > FROM "Komponent.db"
> > > > > > GROUP BY Komponent
> > > > > > ORDER BY Komponent
> > > >
> > > > > Har du prøvet uden distintct? Har du prøvet select distinct
> > > > > lower(komponent), sum(pris)?
> > > >
> > > >
> > > > Distinct skulle være ganske unødvendig i og med at du grupperer på
> > > > Komponent. Hvilken database benytter du?
> > > > Distinct er en af de "dyre operationer" (O(n log n)) og kan drastisk
> > > > reducere performance af din forespørgsel - særligt hvis det er et
knap
> > så
> > > > prof. DBMS du benytter, da optimizeren så ikke er helt så klog :)
> > > >
> > > > Mvh
> > > > Mikael Rune Jensen
> > > >
> > > > --
> > > > Mikael Rune Jensen
> > > > Department of Computer Science
> > > > Aalborg University
> > > > http://www.cs.auc.dk/~mrj
> > > >
> > > >
> > >
> > >
> >
> >
>
>



Pølle (26-08-2002)
Kommentar
Fra : Pølle


Dato : 26-08-02 11:39

Hej igen Michael

Prøv lige om flg forespørgsel virker:

SELECT Lower(Komponent) AS mineKomponenter, SUM(Pris)
FROM "Komponent.db"
GROUP BY mineKomponenter

Desværre giver det fejlmeddelelsen: "Invalid Field Name".

Jeg har samtidig afprøvet:
SELECT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
GROUP BY mineKomponenter
Fejlmeddelelse: "Invalid Field Name".
OG
SELECT Lower(Komponent) AS mineKomponenter
FROM "Komponent.db"
ORDER BY mineKomponenter
Ovenmstående OK
DVS. "GROUP BY" kan ikke lide mineKomponenter, men ok for "ORDER BY"

Mvh
Pølle







Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 12:20

Hejsa Pølle

Så er det nok noget med at Aliases ikke virker i Group Bys.. Underligt det
der paradox :)
Så prøv at bruge aliases i order by men ikke i group by. Altså således:

SELECT lower(Komponent) as mineKomponenter, SUM(Pris)
FROM "Komponent.db"
GROUP BY Komponent // Eller måske GROU BY lower(Komponent)
ORDER BY mineKomponenter

Aner ikke om det virker :)

Mvh.
Mikael



"Pølle" <No@Name.dk> wrote in message news:akd0h3$k06$1@sunsite.dk...
> Hej igen Michael
>
> Prøv lige om flg forespørgsel virker:
>
> SELECT Lower(Komponent) AS mineKomponenter, SUM(Pris)
> FROM "Komponent.db"
> GROUP BY mineKomponenter
>
> Desværre giver det fejlmeddelelsen: "Invalid Field Name".
>
> Jeg har samtidig afprøvet:
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> GROUP BY mineKomponenter
> Fejlmeddelelse: "Invalid Field Name".
> OG
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> Ovenmstående OK
> DVS. "GROUP BY" kan ikke lide mineKomponenter, men ok for "ORDER BY"
>
> Mvh
> Pølle
>
>
>
>
>
>



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 12:32

Hej igen

Det er altså lidt underligt at det ikke virker?! Iflg. denne reference
http://www.thedbcommunity.com/interact/sql7.htm
skulle man kunne gøre lige nøjagtig det du er ude efter.. Måske er det den
Lower-funktion der spolerer det hele?! Men man må tro at dem der har skrevet
den SQL-eksekverings-maskine har taget hensyn til den slags :)

Mvh.
Mikael

"Pølle" <No@Name.dk> wrote in message news:akd0h3$k06$1@sunsite.dk...
> Hej igen Michael
>
> Prøv lige om flg forespørgsel virker:
>
> SELECT Lower(Komponent) AS mineKomponenter, SUM(Pris)
> FROM "Komponent.db"
> GROUP BY mineKomponenter
>
> Desværre giver det fejlmeddelelsen: "Invalid Field Name".
>
> Jeg har samtidig afprøvet:
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> GROUP BY mineKomponenter
> Fejlmeddelelse: "Invalid Field Name".
> OG
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> Ovenmstående OK
> DVS. "GROUP BY" kan ikke lide mineKomponenter, men ok for "ORDER BY"
>
> Mvh
> Pølle
>
>
>
>
>
>



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 12:38

Hej igen igen

Jeg glemte lige at spørge om en ting.. :) Er det nødvendigt at have "
omkring dine attributter/tabeller?
Du skriver ".... FROM "Komponent.db"...". Måske skal der være " omkring alle
tabeller/attributter (sådan vil Interbase vist nok have det). Altså så
forespørgslen ser således ud:

SELECT Lower("Komponent"), Sum("Pris")
FROM "Komponent.db"
GROUP BY "Komponent"
ORDER BY "Komponent"

Jeg har som tidligere nævnt aldrig prøvet Paradox, så mine forslag er ikke
nødvendigvis særligt kvalificerede :)

Mvh.
Mikael



"Pølle" <No@Name.dk> wrote in message news:akd0h3$k06$1@sunsite.dk...
> Hej igen Michael
>
> Prøv lige om flg forespørgsel virker:
>
> SELECT Lower(Komponent) AS mineKomponenter, SUM(Pris)
> FROM "Komponent.db"
> GROUP BY mineKomponenter
>
> Desværre giver det fejlmeddelelsen: "Invalid Field Name".
>
> Jeg har samtidig afprøvet:
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> GROUP BY mineKomponenter
> Fejlmeddelelse: "Invalid Field Name".
> OG
> SELECT Lower(Komponent) AS mineKomponenter
> FROM "Komponent.db"
> ORDER BY mineKomponenter
> Ovenmstående OK
> DVS. "GROUP BY" kan ikke lide mineKomponenter, men ok for "ORDER BY"
>
> Mvh
> Pølle
>
>
>
>
>
>



Pølle (26-08-2002)
Kommentar
Fra : Pølle


Dato : 26-08-02 18:46

Hej igen

Jeg tror, jeg vil lave denne sum på anden måde.
Jeg synes du har gjort et FLOT stykke arbejde og der er selv om det ikke gav
resultat i sidste ende.

Mvh
Pølle



Mikael Rune Jensen (26-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 26-08-02 22:24

Hejsa Pølle

> Jeg tror, jeg vil lave denne sum på anden måde.

Du kunne også selv implementere en Group-By-Sum metode..

Du kan jo godt skrive:

select lower(komponent), pris
from komponent.dk
order by lower(kompont)

Således får du jo en sorteret liste hvor flere komponenter måske er gentaget
flere gange.
Så skal du jo sådan set bare løbe alle disse tupler igennen og så selv
summere prisen hver gang du ser den samme komponent i listen. Og når du
støder på en ny komponent, så ved du at du skal lave en ny "gruppe" - altså
begynde at summe forfra. Fik du helt fat i det? ;)

Her er lige noget pseudokode - håber du forstår meningen med det :)

for i := 0 to {antal tupler} do
begin
if (tuple_i = tuple seen before) then
sum := sum + pris for tupel_i
else
begin
sum := pris for tuple_i
tuple seen before := tuple_i
end;
end;

Jeg har ikke lige tjekket om det kan køre i Delphi ;)

> Jeg synes du har gjort et FLOT stykke arbejde og der er selv om det ikke
gav
> resultat i sidste ende.

Det skal du skam ikke takke for :) Det er jo netop meningen med sådant et
forum. Det er altid sjovt når man støder på nogle nye problemer :) Jeg synes
dog stadig at det er mærkeligt at det ikke virker?! Hvis du nogensinde
finder en SQL-løsning på dit problem gider du så ikke poste den i dette
forum? Jeg er helt nysgerrig efter hvad det er der er i vejen :)

Mvh.
Mikael



> Mvh
> Pølle
>
>



Pølle (27-08-2002)
Kommentar
Fra : Pølle


Dato : 27-08-02 14:50

Hej Michael

Din nedenstående idé er netop, det jeg har gjort, som alternativ til det vi
diskuterede.
Jeg har hele tiden vidst, at jeg kunne bruge metoden, men jeg ville squ'
ikke bøje mig - "det måtte kunne lykkes på en mere elegant måde", men 'AK OH
VE' sådan er livet jo somme tider.

Pølle
-----------------------------


"Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
news:3d6a9c54$0$234$ba624c82@nntp03.dk.telia.net...
> Hejsa Pølle
>
> > Jeg tror, jeg vil lave denne sum på anden måde.
>
> Du kunne også selv implementere en Group-By-Sum metode..
>
> Du kan jo godt skrive:
>
> select lower(komponent), pris
> from komponent.dk
> order by lower(kompont)
>
> Således får du jo en sorteret liste hvor flere komponenter måske er
gentaget
> flere gange.
> Så skal du jo sådan set bare løbe alle disse tupler igennen og så selv
> summere prisen hver gang du ser den samme komponent i listen. Og når du
> støder på en ny komponent, så ved du at du skal lave en ny "gruppe" -
altså
> begynde at summe forfra. Fik du helt fat i det? ;)
>
> Her er lige noget pseudokode - håber du forstår meningen med det :)
>
> for i := 0 to {antal tupler} do
> begin
> if (tuple_i = tuple seen before) then
> sum := sum + pris for tupel_i
> else
> begin
> sum := pris for tuple_i
> tuple seen before := tuple_i
> end;
> end;
>
> Jeg har ikke lige tjekket om det kan køre i Delphi ;)
>
> > Jeg synes du har gjort et FLOT stykke arbejde og der er selv om det ikke
> gav
> > resultat i sidste ende.
>
> Det skal du skam ikke takke for :) Det er jo netop meningen med sådant et
> forum. Det er altid sjovt når man støder på nogle nye problemer :) Jeg
synes
> dog stadig at det er mærkeligt at det ikke virker?! Hvis du nogensinde
> finder en SQL-løsning på dit problem gider du så ikke poste den i dette
> forum? Jeg er helt nysgerrig efter hvad det er der er i vejen :)
>
> Mvh.
> Mikael
>
>
>
> > Mvh
> > Pølle
> >
> >
>
>



Mikael Rune Jensen (27-08-2002)
Kommentar
Fra : Mikael Rune Jensen


Dato : 27-08-02 16:03

Hejsa Pølle

> Din nedenstående idé er netop, det jeg har gjort, som alternativ til det
vi
> diskuterede.
> Jeg har hele tiden vidst, at jeg kunne bruge metoden, men jeg ville squ'
> ikke bøje mig - "det måtte kunne lykkes på en mere elegant måde", men 'AK
OH
> VE' sådan er livet jo somme tider.

Hehe :) Jeg kender godt den følelse! Man gider ikke programmere sig ud af
noget, som man med sikkerhed VED kan lade sig gøre! Jeg undrer mig stadig
over hvorfor det SQL ikke virker - og jeg finder det ikke helt
tilfredsstillende at man bliver nødt til at lave en masse ekstra kode der
skal post-processere ens resultater bare fordi der er nogen som ikke lige
har taget hensyn til at man måske godt kunne tænke sig både en group by OG
en order by :)

Godt du fik det til at virke :)

Mvh.
Mikael


--
Mikael Rune Jensen
Department of Computer Science
Aalborg University
http://www.cs.auc.dk/~mrj

> Pølle
> -----------------------------
>
>
> "Mikael Rune Jensen" <mrj@cs.auc.dk> skrev i en meddelelse
> news:3d6a9c54$0$234$ba624c82@nntp03.dk.telia.net...
> > Hejsa Pølle
> >
> > > Jeg tror, jeg vil lave denne sum på anden måde.
> >
> > Du kunne også selv implementere en Group-By-Sum metode..
> >
> > Du kan jo godt skrive:
> >
> > select lower(komponent), pris
> > from komponent.dk
> > order by lower(kompont)
> >
> > Således får du jo en sorteret liste hvor flere komponenter måske er
> gentaget
> > flere gange.
> > Så skal du jo sådan set bare løbe alle disse tupler igennen og så selv
> > summere prisen hver gang du ser den samme komponent i listen. Og når du
> > støder på en ny komponent, så ved du at du skal lave en ny "gruppe" -
> altså
> > begynde at summe forfra. Fik du helt fat i det? ;)
> >
> > Her er lige noget pseudokode - håber du forstår meningen med det :)
> >
> > for i := 0 to {antal tupler} do
> > begin
> > if (tuple_i = tuple seen before) then
> > sum := sum + pris for tupel_i
> > else
> > begin
> > sum := pris for tuple_i
> > tuple seen before := tuple_i
> > end;
> > end;
> >
> > Jeg har ikke lige tjekket om det kan køre i Delphi ;)
> >
> > > Jeg synes du har gjort et FLOT stykke arbejde og der er selv om det
ikke
> > gav
> > > resultat i sidste ende.
> >
> > Det skal du skam ikke takke for :) Det er jo netop meningen med sådant
et
> > forum. Det er altid sjovt når man støder på nogle nye problemer :) Jeg
> synes
> > dog stadig at det er mærkeligt at det ikke virker?! Hvis du nogensinde
> > finder en SQL-løsning på dit problem gider du så ikke poste den i dette
> > forum? Jeg er helt nysgerrig efter hvad det er der er i vejen :)
> >
> > Mvh.
> > Mikael
> >
> >
> >
> > > Mvh
> > > Pølle
> > >
> > >
> >
> >
>
>



Pølle (25-08-2002)
Kommentar
Fra : Pølle


Dato : 25-08-02 20:11

Hej David

Jeg har lige prøvet følgende:
"SELECT DISTINCT Lower(Komponent), SUM(Pris)
FROM "Komponent.db"
GROUP BY Lower(Komponent)
ORDER BY Lower(Komponent)"

Men den kunne ikke åbne TQuery

Med
Pølle


"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:akabrq$8qo$1@sunsite.dk...
> "Pølle" <No@Name.dk> skrev i en meddelelse news:akaakc$2s0$1@sunsite.dk...
>
> > Hvis jeg har en database kun 2 felter nemlig "Komponent" og "Pris"
> >
> > Denne database har følgende records:
> >
> > Lampe, 3
> > Komtakt, 10
> > lampe, 2
> >
> > Bemærk: Ovenstående record 1 og 3 er ens på nær 1 karakter.
> >
> > Ønsker man så at summen (Pris) vil SQL'en se således ud:
> > SELECT DISTINCT Komponent, SUM(Pris)
> > FROM "Komponent.db"
> > GROUP BY Komponent
> > ORDER BY Komponent
> >
> > Resultater bliver:
> > Lampe, 3
> > Komtakt, 10
> > lampe, 2
> >
> > Hvordan kan man få en TQuery til at ignorere store/små bogstaver
>
> Har du prøvet uden distintct? Har du prøvet select distinct
> lower(komponent), sum(pris)?
>
>



David A. D. Konrad (25-08-2002)
Kommentar
Fra : David A. D. Konrad


Dato : 25-08-02 20:25

"Pølle" <No@Name.dk> skrev i en meddelelse news:akba6b$3vs$1@sunsite.dk...

> Jeg har lige prøvet følgende:
> "SELECT DISTINCT Lower(Komponent), SUM(Pris)
> FROM "Komponent.db"
> GROUP BY Lower(Komponent)
> ORDER BY Lower(Komponent)"
>
> Men den kunne ikke åbne TQuery

Det er jo ret svært at vide hvad der er galt, når ikke du skriver hvordan
den ikke kan "åbne" TQuery En
"select lower(firstname) from person" [for at give et eksempel] virker i
stort set alle databaser - og "lower" er også en del af "localSQL", som er
Paradox' SQL "variant". Brugen af distinct betyder ligeledes intet her
(fraset Mikael Rune Jensen's bemærkninger). I øvrigt skal du vel have group
by pris? Så...




Pølle (25-08-2002)
Kommentar
Fra : Pølle


Dato : 25-08-02 22:22

Hej David (igen)

Jeg har svaret på noget lignende se venligst 25´aug kl. 22:36 og 22:46

Mvh
Pølle

"David A. D. Konrad" <david_konrad@hotmail.com> skrev i en meddelelse
news:akbb3f$89f$1@sunsite.dk...
> "Pølle" <No@Name.dk> skrev i en meddelelse news:akba6b$3vs$1@sunsite.dk...
>
> > Jeg har lige prøvet følgende:
> > "SELECT DISTINCT Lower(Komponent), SUM(Pris)
> > FROM "Komponent.db"
> > GROUP BY Lower(Komponent)
> > ORDER BY Lower(Komponent)"
> >
> > Men den kunne ikke åbne TQuery
>
> Det er jo ret svært at vide hvad der er galt, når ikke du skriver hvordan
> den ikke kan "åbne" TQuery En
> "select lower(firstname) from person" [for at give et eksempel] virker i
> stort set alle databaser - og "lower" er også en del af "localSQL", som er
> Paradox' SQL "variant". Brugen af distinct betyder ligeledes intet her
> (fraset Mikael Rune Jensen's bemærkninger). I øvrigt skal du vel have
group
> by pris? Så...
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177496
Tips : 31968
Nyheder : 719565
Indlæg : 6408490
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste