Avatar billede musiat Nybegynder
14. april 2004 - 18:46 Der er 7 kommentarer og
2 løsninger

Problemer med GROUP BY

Vil bare høre om der nogen, der kunne hjælpe mig en med en simpel GROUP BY-funktion. Jeg trækker data ud fra to tabeller sådan her:

SELECT COUNT(D.destination_name), G.guide_ID, G.guide_contact 
    FROM Guide_t G, Destination_t D
        WHERE G.destination_ID = D.destination_ID
            GROUP BY D.destination_name;

Jeg vil gerne have grupperet G.guide_ID, G.guide_contact efter destination_name, men skidtet virker ikke:-( Den skriver følgende fejl:

FEJL i linie 1:
ORA-00979: not a GROUP BY expression
Avatar billede teepee Nybegynder
14. april 2004 - 19:10 #1
Det lyder nærmere som om at du vil have dem sorteret og ikke grupperet?
Avatar billede musiat Nybegynder
14. april 2004 - 19:16 #2
Ah - ikke rigtig, jeg vil gerne gruppere mine guider efter hvilken rejsemål(destination), de arbejder:

Spanien
------------
Anders
Michael

Frankrig
------------
Kåre
Lone

Etc. Har jeg misforstået hvad GROUP BY bruges til?
Avatar billede Slettet bruger
14. april 2004 - 19:17 #3
SELECT COUNT(D.destination_name), G.guide_ID, G.guide_contact 
    FROM Guide_t G, Destination_t D
        WHERE G.destination_ID = D.destination_ID
            GROUP BY D.destination_name, G.guide_ID, G.guide_contact;
Avatar billede Slettet bruger
14. april 2004 - 19:18 #4
undskyld - lidt for hurtigt, trækker svaret tilbage
Avatar billede Slettet bruger
14. april 2004 - 19:20 #5
Du kan skrive:

SELECT D.destination_name, G.guide_ID, G.guide_contact 
FROM Guide_t G, Destination_t D
WHERE G.destination_ID = D.destination_ID
ORDER BY D.destination_name, G.guide_ID, G.guide_contact;
Avatar billede musiat Nybegynder
14. april 2004 - 19:29 #6
Ok, men så har helt misforstået GROUP BY:-( Jeg ville så mægtig gerne bruge en GROUP BY (på en eller anden måde, det er en skole-opgave), men jeg kan ikke få en sådan een til virke overhovedet. Den samme fejl som oven for, ligegyldig hvad jeg gør...
Avatar billede teepee Nybegynder
14. april 2004 - 19:38 #7
Måske kan du bruge:

SELECT D.destination_name, count(G.guide_ID) antal
    FROM Guide_t G, Destination_t D
        WHERE G.destination_ID = D.destination_ID
            GROUP BY D.destination_name;
... så får du antallet for hver destination, i det mindste - og du har benyttet group by
Avatar billede musiat Nybegynder
14. april 2004 - 20:01 #8
Hey - nu fatter jeg det:-) Mange tak
Avatar billede trer Nybegynder
14. april 2004 - 20:13 #9
Lige hurtigt - dit problem var, at i en SELECT GROUP BY skal alle kolonner enten indgå i en aggregeret funktion (MAX, SUM, MIN, AVG) eller indgå i GROUP BY betingelsen.

fejlen i din oprindelige select bestod i, at guide_id og guide_contact hverken fandtes i GROUP BY delen eller blev aggregeret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester