/ 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
Fejl ved SELECT DISTINCT
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 08:32

Jeg prøver at køre den relativt simple query:

SELECT DISTINCT titel FROM sider

og får fejlmeddelelsen

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Cannot include Memo, OLE, or
Hyperlink Object when you select unique values (titel).

Wa æ gal? Jeg kan næsten regne ud, at man bare ikke kan bruge SELECT
DISTINCT med Memo, men hvad dælen gør en klog mand så?

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."




 
 
Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 08:38

....og lige en hurtig en til: Jeg vil gerne have at vide, hvor mange sider,
der har en bestemt værdi i feltet "modifiedby" (som er af typen "text").
Derfor ser min query sådan ud:

SELECT DISTINCT modifiedby,count(modifiedby) AS antal FROM sider

men så får jeg denneher:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that
does not include the specified expression 'modifiedby' as part of an
aggregate function.

Hvad er nu det for noget snask?

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



Torben (17-01-2003)
Kommentar
Fra : Torben


Dato : 17-01-03 09:50

>
> SELECT DISTINCT modifiedby,count(modifiedby) AS antal FROM sider
>
> men så får jeg denneher:
>
> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
> [Microsoft][ODBC Microsoft Access Driver] You tried to execute a query
that
> does not include the specified expression 'modifiedby' as part of an
> aggregate function.
>
> Hvad er nu det for noget snask?

Hej Steen!

Dit sidste problem kan jeg muligvis hjælpe dig med.
Når du bruger en funktion som count(), så skal du også have denne inkluderet
i en "order by".

Det tekniske kan jeg ikke lige i skrivende stund redegøre for. Hvis du
retter din sql til så den ser ud som f.eks:
SELECT DISTINCT modifiedby, count(modifiedby) AS antal
FROM sider
ORDER BY count(modifiedby), modifiedby

Så skulle jeg mene at det virker.

M.v.h.
Torben Philippsen



Torben (17-01-2003)
Kommentar
Fra : Torben


Dato : 17-01-03 09:57

> SELECT DISTINCT modifiedby, count(modifiedby) AS antal
> FROM sider
> ORDER BY count(modifiedby), modifiedby

RETTELSE:

Du skal bruge GROUP BY istedet for ORDER BY - jeg bytter altid rundt på de
to.

M.v.h.
Torben



Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 11:13

"Torben" <torbenph@worldonline.dk> wrote in message
news:3e27c516$0$71701$edfadb0f@dread11.news.tele.dk...

> > SELECT DISTINCT modifiedby, count(modifiedby) AS antal
> > FROM sider
> > ORDER BY count(modifiedby), modifiedby
>
> RETTELSE:
>
> Du skal bruge GROUP BY istedet for ORDER BY - jeg bytter altid rundt på de
> to.

Desværre nej. Nu ser min query således ud:

SELECT DISTINCT modifiedby,count(modifiedby) AS antal FROM sider GROUP BY
count(modifiedby),modifiedby

hvilket resulterer i:

Cannot have aggregate function in GROUP BY clause (count(modifiedby)).

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."




Jens Gyldenkærne Cla~ (17-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-03 11:10

Steen Eiler Jørgensen skrev:

> ...og lige en hurtig en til: Jeg vil gerne have at vide, hvor
> mange sider, der har en bestemt værdi i feltet "modifiedby"
> (som er af typen "text"). Derfor ser min query sådan ud:
>
> SELECT DISTINCT modifiedby,count(modifiedby) AS antal FROM
> sider

Du skal ikke bruge DISTINCT her, men GROUP BY i stedet:

SELECT modifiedby, count(*) as antal
FROM sider
GROUP BY modifiedby
--
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

Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 11:21

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote

> Du skal ikke bruge DISTINCT her, men GROUP BY i stedet:
>
> SELECT modifiedby, count(*) as antal
> FROM sider
> GROUP BY modifiedby

Ja, se, nu nærmer vi os! Jeg får ganske rigtigt modifiedby og hvert antal af
modifiedby, men de er sorteret alfabetisk efter modifiedby. Jeg ville jo
helst have det højeste antal øverst, osv. Men

SELECT modifiedby, count(*) as antal FROM sider GROUP BY antal,modifiedby

resulterer i

Too few parameters. Expected 1.

og

SELECT modifiedby, count(*) as antal FROM sider GROUP BY count(*),modifiedby

resulterer i

Cannot have aggregate function in GROUP BY clause (count(*)).

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."




Jens Gyldenkærne Cla~ (17-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-03 11:44

Steen Eiler Jørgensen skrev:

>> SELECT modifiedby, count(*) as antal
>> FROM sider
>> GROUP BY modifiedby
>
> Ja, se, nu nærmer vi os! Jeg får ganske rigtigt modifiedby og
> hvert antal af modifiedby, men de er sorteret alfabetisk efter
> modifiedby. Jeg ville jo helst have det højeste antal øverst,
> osv.

Sortering foregår med ORDER BY - ligesom gruppering foregår med
GROUP BY:

   SELECT modifiedby, count(*) as antal
   FROM sider
   GROUP BY modifiedby
   ORDER BY antal DESC

(det skulle virke i Access - andre steder hvor man ikke kan
genbruge et aliasfelt skal man skrive ORDER BY count(*) DESC)

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

Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 13:10

"Jens Gyldenkærne Clausen" <jc@dmf.dk> wrote

> Sortering foregår med ORDER BY - ligesom gruppering foregår med
> GROUP BY:
>
> SELECT modifiedby, count(*) as antal
> FROM sider
> GROUP BY modifiedby
> ORDER BY antal DESC

Okay - jeg tilstår: jeg aner ikke, hvad GROUP BY gør

> (det skulle virke i Access - andre steder hvor man ikke kan
> genbruge et aliasfelt skal man skrive ORDER BY count(*) DESC)

Nej, kun hvis jeg bruger count(*) virker det - ellers får jeg en "Too few
parameters"

Så nu virker det! Tusind tak for hjælpen

Mvh Steen

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



Jens Gyldenkærne Cla~ (17-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-03 13:28

Steen Eiler Jørgensen skrev:

>> Sortering foregår med ORDER BY - ligesom gruppering foregår
>> med GROUP BY:

> Okay - jeg tilstår: jeg aner ikke, hvad GROUP BY gør

Læs ovenfor ;). Gruppering samler et recordset omkring en eller
flere feltværdier.

   SELECT modifiedby
   FROM sider
   GROUP BY modifiedby

- giver én record for hver værdi af modifiedby (i dette tilfælde
præcis som DISTINCT ville have gjort).

Man bruger GROUP BY sammen med aggregatfunktioner - fx SUM, COUNT,
MIN og MAX - der alle er funktioner der virker på flere rækker ad
gangen. Bruger man GROUP BY i en forespørgsel skal alle felter i
select-listen enten være med i GROUP BY-linjen eller også være
behandlet af en aggregatfunktion.

Ugyldigt eksempel:
   SELECT modifiedby, modifiedtime
   FROM sider
   GROUP BY modifiedby

- vil ikke virke, fordi modifiedtime hverken er med i GROUP BY-
linjen eller indkapslet af en aggregatfunktion.

Gyldige eksempler:
   SELECT modifiedby, MAX(modifiedtime)
   FROM sider
   GROUP BY modifiedby

   SELECT modifiedby, modifiedtime, count(*)
   FROM sider
   GROUP BY modifiedby, modifiedtime
--
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

Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 14:24

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote

> Man bruger GROUP BY sammen med aggregatfunktioner - fx SUM, COUNT,
> MIN og MAX - der alle er funktioner der virker på flere rækker ad
> gangen. Bruger man GROUP BY i en forespørgsel skal alle felter i
> select-listen enten være med i GROUP BY-linjen eller også være
> behandlet af en aggregatfunktion.

Ach so... Det er da smart - det vil jeg til at bruge noget mere
Mange tak for hjælpen.

Mvh Steen

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



///JJ (17-01-2003)
Kommentar
Fra : ///JJ


Dato : 17-01-03 10:33

"Steen Eiler Jørgensen" <oz1sejREMOVETHIS@get2net.dk> wrote in message
news:b08bc2$3vf$1@sunsite.dk...
> Jeg prøver at køre den relativt simple query:
>
> SELECT DISTINCT titel FROM sider
>
> og får fejlmeddelelsen
>
> Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
> [Microsoft][ODBC Microsoft Access Driver] Cannot include Memo, OLE, or
> Hyperlink Object when you select unique values (titel).
>
> Wa æ gal? Jeg kan næsten regne ud, at man bare ikke kan bruge SELECT
> DISTINCT med Memo, men hvad dælen gør en klog mand så?

Har du prøvet at type-cast'e dit memo til varchar eller måske text?

select distinct cast(titel as varchar(1000)) from sider


mvh
///JJ



Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 11:17

"///JJ" <jesperhn@nospamtdcadsl.dk> wrote in message
news:b08irc$2kfm$1@news.cybercity.dk...

> Har du prøvet at type-cast'e dit memo til varchar eller måske text?
>
> select distinct cast(titel as varchar(1000)) from sider

Hm, den kendte jeg godt nok ikke. Men queryen

SELECT DISTINCT CAST(titel AS varchar(1000)) FROM sider

resulterer i

Syntax error (missing operator) in query expression 'CAST(titel AS
varchar(1000))'.

Fik jeg sagt, at det er en Access2000-db? (Hvis det spiller nogen
trille...?)

--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."




Jens Gyldenkærne Cla~ (17-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-03 11:08

Steen Eiler Jørgensen skrev:

> SELECT DISTINCT titel FROM sider

Er titel et memofelt?

> Wa æ gal? Jeg kan næsten regne ud, at man bare ikke kan bruge
> SELECT DISTINCT med Memo, men hvad dælen gør en klog mand så?

Har du brug for at titel skal være af typen memo? Hvor lange titler
gemmer du?

Jeg kan ikke lige huske om left kan bruges på et memo-felt, men
ellers kan du prøve

SELECT DISTINCT LEFT(titel, 255) as titel FROM sider
--
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

Steen Eiler Jørgense~ (17-01-2003)
Kommentar
Fra : Steen Eiler Jørgense~


Dato : 17-01-03 11:25

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote

> Er titel et memofelt?

Jeps, og jeg kan ikke lige huske, hvorfor jeg lavede det til et memofelt,
men såvidt jeg erindrer, var der en god grund til det

> Har du brug for at titel skal være af typen memo? Hvor lange titler
> gemmer du?

Ja, det er jo det, formodentlig ikke over 255 tegn, men jeg kan ikke huske
det.

> Jeg kan ikke lige huske om left kan bruges på et memo-felt, men
> ellers kan du prøve
>
> SELECT DISTINCT LEFT(titel, 255) as titel FROM sider

Hm, næ, jeg får en

Circular reference caused by alias 'titel' in query definition's SELECT
list.


--
Steen Eiler Jørgensen
"Time has resumed its shape. All is as it was before.
Many such journeys are possible. Let me be your gateway."



Jens Gyldenkærne Cla~ (17-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-03 11:40

Steen Eiler Jørgensen skrev:

>> Har du brug for at titel skal være af typen memo? Hvor lange
>> titler gemmer du?
>
> Ja, det er jo det, formodentlig ikke over 255 tegn, men jeg
> kan ikke huske det.

Memofelter er, som du nu har erfaret, besværlige at arbejde med på
mange områder. Man kan fx ikke søge på et memofelt.
Hvis det ikke er tvingende nødvendigt at bruge datatypen så hold
dig til tekst.

>> SELECT DISTINCT LEFT(titel, 255) as titel FROM sider
>
> Hm, næ, jeg får en
>
> Circular reference caused by alias 'titel' in query
> definition's SELECT list.

O.k. - men den er jo nem at slippe af med. Skift aliasset ud i
sætningen (altså "as kortTitel" eller lignende). Access og MSSQL
opfører sig forskelligt her.



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

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

Månedens bedste
Årets bedste
Sidste års bedste