Avatar billede hooh Nybegynder
23. marts 2005 - 09:47 Der er 9 kommentarer og
2 løsninger

group by (igen)

Hej

hvordan kan jeg lave en group by fx. country

fx. select countryid from country group by country

hvor countryid skal returnere ALLE de id'er som er blevet grupperes. (komma separeret)
fx. 1,5,8,9
Avatar billede arne_v Ekspert
23. marts 2005 - 10:39 #1
En SELECT kan ikke returnere et variabel antal kolonner.

Jeg tror at det er:

SELECT contryid,id
FROM country
ORDER BY countryid,id

du leder efter, hvor din applikation så "skriver vandret" så længe
countryid er det samme og laver et linieskift når countryid skifter
Avatar billede hooh Nybegynder
23. marts 2005 - 10:54 #2
Hmm det var måske forkert at kalde det countryid.

skal nok være ordreid.

Så den kan returnere alle ordreid for et given land.

Det er mere så jeg slipper for at lave en sql og køre en loop for at samle alle id'er først.

og så køre den i min næste sql.


select * from tabel where id in(1,5,8,9)
Avatar billede barklund Nybegynder
23. marts 2005 - 11:01 #3
Du kan godt lave det i én query, som arne_v siger, men så skal du selv uden for i applikationen spotte, hvornår der skiftes country. Altså have et ydre loop for hvert nyt countryid og et indre loop for hver ordreid i det pågældende country. Og så skal du netop bare vælge dem alle sammen og først sortere efter country og derefter ordreid.

Men hvis du siger lidt mere om dit tilfælde og måske kommer med nogle eksempler, kan du få nogle yderligere tips :)

--
Morten Barklund
Avatar billede hooh Nybegynder
23. marts 2005 - 11:16 #4
jeg har to tabeller

en med alle users.
userid||navn||country

så har jeg en tabel med alle ordre
ordreid||beløb||userid

Så skal jeg opsummere alle ordre fra Danmark

Så jeg laver select userid from users
do while
userid = userid & rs("userid") & ","
loop

select * from ordre where userid in (" & userid & ")

altså noget lign.
Skal bare være mere simpelt

kan i følge mig...

hehe nu hvor jeg var ved at beskrive det slog det mig lige at man bare kan joine tabellerne :-)

select * from user, ordre where user.userid=ordre.userid and user.country = 'Denmark'

Er det ikke bedre :-) *flovt*
Avatar billede arne_v Ekspert
23. marts 2005 - 11:18 #5
meget bedre
Avatar billede hooh Nybegynder
23. marts 2005 - 11:24 #6
takker for jeres hjælp..

uden jer ville jeg ikke kunne tænke klart :-)

Altid godt at beskrive problemerne for nogle andre.

Hvis i giver et svar kan i få nogle point hver for at clear min hjerne...
Avatar billede arne_v Ekspert
23. marts 2005 - 11:26 #7
:-)
Avatar billede arne_v Ekspert
23. marts 2005 - 11:26 #8
og svar
Avatar billede barklund Nybegynder
23. marts 2005 - 11:27 #9
Og jo, jeg kunne heller ikke lige se, hvor grouping kom ind i billedet :)
Avatar billede barklund Nybegynder
23. marts 2005 - 11:30 #10
Og tak for point :)
Avatar billede hooh Nybegynder
23. marts 2005 - 11:31 #11
selv tak drenge
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