Avatar billede haz Nybegynder
05. juni 2007 - 08:26 Der er 18 kommentarer og
1 løsning

GROUP BY problem

jeg har et problem med en sqlsætning noget lign. dette

SELECT * FROM tabel2,tabel2 WHERE tabel1.id=tabel2.id GROUP BY tabel1.url

men GROUP BY giver fejl på ms mens det kører fint på en mysql.
Avatar billede michael_stim Ekspert
05. juni 2007 - 08:28 #1
Du skal nok have alle kolonnenavne med når du grupperer.
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 08:47 #2
tabel2 er nævnt 2 gange:

SELECT * FROM tabel1,tabel2 WHERE tabel1.id=tabel2.id GROUP BY tabel1.url
Avatar billede michael_stim Ekspert
05. juni 2007 - 08:53 #3
dr_chaos-> Det er nok bare en slåfejl ;o)
Avatar billede haz Nybegynder
05. juni 2007 - 09:02 #4
ja det er en tastefejl

at indtaste alle kolonnenavnene gør ingen forskel 

vs siger følgende

Column 'tabel1.url' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 09:05 #5
du skal smide kollonnerne efter group by.
Avatar billede michael_stim Ekspert
05. juni 2007 - 09:09 #6
Kan det have noget at göre med at du skal have SELECT tabel1.*, tabel2.* FROM tabel1...
Avatar billede michael_stim Ekspert
05. juni 2007 - 09:12 #7
Men behöver du alle kolonner?
SELECT tabel1.kol1, tabel1.kol2, tabel2.kol1, tabel2.kol2 FROM tabel1, tabel2 WHERE tabel1.kol1 = tabel2.kol1 GROUP BY tabel1.kol1, tabel1.kol2...
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 09:32 #8
ja det skal man
kun:
SELECT * FROM tabel1, tabel2 WHERE tabel1.kol1 = tabel2.kol1 GROUP BY tabel1.kol1, tabel1.kol2, tabel2.kol1, tabel2.kol2

Er nødvendigt
Avatar billede michael_stim Ekspert
05. juni 2007 - 09:35 #9
Det er ikke dig jeg snakker til dr chaos ;o) Som du ser i min förste kommentar er det allerede konstateret. Jeg vil undgå at haz fetcher alle kolonner med *
Avatar billede haz Nybegynder
05. juni 2007 - 09:38 #10
du har desværre ret dr.chaos  men vedkommende som har bestemt at det skulle være anderledes end på en mysql burde skydes !!!!!

lav lige et svar
Avatar billede michael_stim Ekspert
05. juni 2007 - 10:00 #11
Nu ikke for at sige noget og jeg samler ikke på point, men du fik svaret i min förste kommentar og Kommentar: michael_stim
05/06-2007 09:12:28

;o)
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 10:11 #12
jeg tror bare ikke at haz helt forstod hvad du mente.
Hvis man læser 05/06-2007 09:02:58.
Derfor udpenslede jeg det bare.
Din kommentar 05/06-2007 09:12:28 virkede som et spørgsmål. Derfor troede jeg den var til mig :)

I virkeligeheden er denne her group by unødvendig og tidskrævende da du alligevel henter alle kolonner.
Du kan formodentlig lige så vel lave en SELECT DISTINCT.
Avatar billede haz Nybegynder
05. juni 2007 - 10:12 #13
oh sorry ,jeg troede du mente at jeg skulle udskifte * med kolonnenavnene
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 10:14 #14
Pointene er dine hvis du vil have dem :)
Avatar billede haz Nybegynder
05. juni 2007 - 10:19 #15
jeg bruger GROUP BY til at fjerne rows med samme url
men jeg må erkende at sqlcommandoen er"lånt" fra en phpside
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 10:39 #16
DISTINCT bør gøre det samme.
Jeg ved ikke helt om den er billigere.
Avatar billede michael_stim Ekspert
05. juni 2007 - 11:10 #17
Distinct hjälper kun hvis man kun tager den kolonne eller alle kolonner er identiske.
Som sagt så pröv at begränse dine forspörgelser og ikke bruge *, men tag kun de kolonner du har brug for.

Og nej tak til point, samler som sagt ikke ;o)
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 11:50 #18
oki så smider jeg et svar.

Hvis du laver group by på alle kolonner må det give samme resultat som en select distinct.
Avatar billede dr_chaos Nybegynder
05. juni 2007 - 11:51 #19
og svar :)

Men er enig i at SELECT * skal undgåes.
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