Avatar billede stefan Nybegynder
04. december 2008 - 00:06 Der er 12 kommentarer

Group by og count

Hey...

Jeg har brug for et udtræk der kan returnere dem der optræder mere end en gang med samme id.

Eksempel:

Tabel:
ID     NAVN
1    Jens
1    Poul
2    Hans
3    Mads
3    Bent

Resultat:
1    Jens
1    Poul
3    Mads
3    Bent
Avatar billede kjulius Novice
04. december 2008 - 00:13 #1
SELECT * FROM tabel WHERE ID IN (SELECT ID FROM tabel GROUP BY ID HAVING COUNT(*) > 1)
Avatar billede kalp Novice
04. december 2008 - 00:39 #2
select id, navn from tabel group by id, navn having count(*) > 1

burde vidst kunne gøre det hurtigere
Avatar billede Syska Mester
04. december 2008 - 02:53 #3
ahhh kalp ...

Kun deres ID der skal være fælles, men han vil også have de forskellige navne med ud ... hvor deres ID er der mere end 1 gang :-)

// ouT
Avatar billede kalp Novice
04. december 2008 - 08:56 #4
yes du har ret den detalje overså jeg:)
Avatar billede erikjacobsen Ekspert
04. december 2008 - 09:09 #5
Vil du være tilfred med

1  Jens,Poul
3  Mads,Bent


?
Avatar billede erikjacobsen Ekspert
04. december 2008 - 09:11 #6
Ups - MSSql (ikke MySql) - så er det knap så nemt.
Avatar billede kjulius Novice
04. december 2008 - 09:25 #7
Jo, det er da meget nemt! :-) Jeg er sikker på, at mit forslag virker - og det i alle databaser, da det er helt standard, som vil kunne forstås af alle db.

Hvis han kun vil have de to felter med (altså ikke alle felter) kan han bare angive dem:

SELECT ID, NAVN FROM dinTabel WHERE ID IN (SELECT ID FROM dinTabel GROUP BY ID HAVING COUNT(*) > 1)
Avatar billede Syska Mester
04. december 2008 - 11:56 #8
kjulius:
Ingen tvivl ... var også Kalp løsning der blev tvivlet på ... og som han selv siger, han overså det ... :-)

Men ja, det virker ...

// ouT
Avatar billede kjulius Novice
04. december 2008 - 19:30 #9
Fint, jeg var vist også lidt for skråsikker der. :-)

Er faktisk lidt i tvivl om, hvordan erikjacobsen ville have fået MySQL til at levere det resultat han opstiller som en mulighed.
Avatar billede erikjacobsen Ekspert
04. december 2008 - 20:00 #10
Avatar billede kjulius Novice
05. december 2008 - 00:49 #11
Ja, det er godt nok en fræk én! :-)

Brugt på den rigtige måde er det uden tvivl en dejlig ting, men jeg er lidt bange for, at den vil "opfordre" til at lave en fejlagtig databasestruktur. Jeg har ikke tal på hvor mange gange jeg har set newbies prøve at behandle data, de har lagt som kommaseparerede værdier i et felt.
Men til brug for en præsentation er det en god funktion.
Avatar billede erikjacobsen Ekspert
05. december 2008 - 08:41 #12
Der er ikke tale om at overtræde 1. normalform i gemte data. Derfor kan den godt forsvares, men man skal have en del styr på hvad der står i felterne. Jeg har ikke prøvet den på tekstfelter med kommaer i og med komma som separator, men jeg vil gætte på at resultatet ikke kan bruges.
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