31. juli 2002 - 08:53
Der er
11 kommentarer og 1 løsning
Distinct på 2 kolonner ?
Hej! Jeg har en database med f.eks 2 kolonner ("a" og "b") Jeg ønsker så at få data fra kolonne "a" men KUN hvor "b" forekommer én gang! dvs jeg ønsker data fra "a" men "b" skal være DISTINCT! "SELECT DISTINCT a FROM database" giver unikke data fra kolonne a ! men jeg ønsker data fra a - udfra unikke data i b! f.eks: SELECT a FROM database WHERE b IN (SELECT DISTINCT b FROM database) Men det virker ikke! Hvad gør jeg forkert ?
Annonceindlæg fra FPT Software
SELECT First(a) FROM database GROUP BY b; eller Last(a), Min(a) alt efter hvilken a-værdi du vil have pr. b-værdi...
SELECT a, b FROM tabel1 WHERE b = (SELECT DISTINCT b FROM tabel1); Er det ikke dette du mener??
SELECT a, b FROM database WHERE b IN (SELECT b FROM database WHERE Count(*)=1 GROUP BY B); Så får du alle a- og b-værdi'er, men kun for de records hvor b kun optræder een gang i tabellen...
SELECT avg(a) FROM database GROUP BY b; Virker sådan set som jeg gerne vil. MEN jeg ønsker ikke at de fundne (unikke) data bliver sorteret efter b. ? Det var derfor jeg ville bruge DISTINCT. Andre ideer ?
SELECT avg(a) FROM database GROUP BY b ORDER BY avg(a);
Nærliggende... Men så er data sorteret efter "a". Jeg ønsker ingen sortering dvs data skal "vises" i samme historik som de kom ind. ? Kan man evt order by date ?
Så må du have et felt, som angiver denne rækkefølge... Evt. dato/klokkeslet, hvor sstandardværdien =Now() eller et autonummerings-felt med stigende værdier... Feltnavnet skal så sættes efter en ORDER BY!
02. august 2002 - 10:33
#10
SELECT DISTINCT a, b FROM Tabel
02. august 2002 - 10:38
#11
Eller SELECT a from tabel group by a having count(b) = 1
25. august 2002 - 12:12
#12
>pmnils1: Kom du videre med dette??
Computerworld tilbyder specialiserede kurser i database-management