Avatar billede thomaslp Nybegynder
13. december 2006 - 12:38 Der er 8 kommentarer og
1 løsning

Hjælp til select statement

Hej,

jeg har brug for hjælp. Jeg har en tabel "documents" der indeholder 2 kolonner "filename" og "Account". Jeg skal bruge en select der udsøger alle records hvor filename er det samme og hvor accountname er forskellige. F.eks.

filename  account
doc1      1
doc1      1
doc1      2
doc2      2

den select jeg skal bruge skulle gerne returnere følgende:

doc1      1
doc1      2

hvis jeg laver følgende statement:
SELECT filename
FROM documents
GROUP BY filename
HAVING(COUNT(filename) > 1)

så får jeg alle records hvor filename fremgår mere end 1 gang, men hvordan tilføjer jeg betingelsen at det kun skal være dem hvor account ikke er den samme
Avatar billede sw_red_6 Nybegynder
13. december 2006 - 12:43 #1
du kunne prøve med SELECT DISTINCT, men hvordan det lige skal indarbejdes i det du har ved jeg ikke lige.
Avatar billede thomaslp Nybegynder
13. december 2006 - 13:11 #2
Jeg kan også omformulere mit spørgsmål lidt.....hvordan laver man et select statement der udvælger records hvor indholdet af kolonne X er det samme og indholdet af kolonne Y er forskelligt.
Avatar billede ramad Praktikant
13. december 2006 - 13:11 #3
Det kan laves sådan her:

SELECT DISTINCT filename, account
FROM  documents
WHERE  filename IN (
                    SELECT filename
                    FROM  documents
                    GROUP BY filename
                    HAVING(COUNT(filename) > 1)
                  )
Avatar billede thomaslp Nybegynder
13. december 2006 - 13:11 #4
jeg har forsøgt med distinct men uden held.
Avatar billede ramad Praktikant
13. december 2006 - 13:12 #5
Fik du ikke set den jeg lige sendte før du postede forrige besked, eller virker den ikke hos dig?
Avatar billede thomaslp Nybegynder
13. december 2006 - 13:27 #6
hej...sorry jeg postede inden jeg så din besked. Jeg har lige prøvet dit statement men det virker desværre ikke efter hensigten. Oversat til det virkelige liv ser min statement sådan ud:

SELECT DISTINCT DOCUMENTNAME, ACCOUNTNUM
FROM Axdb.VENDINVOICEDOCUMENT
WHERE(DOCUMENTNAME IN
(SELECT documentname
FROM axdb.vendinvoicedocument
GROUP BY documentname
HAVING (COUNT(documentname) > 1)))

jeg lavede en test men der kommer også records med hvor dokumentnavn findes flere gange men hvor accountnum er det samme
Avatar billede ramad Praktikant
13. december 2006 - 13:55 #7
Hejsa - ja det kan jeg godt se ikke er helt godt. Vil det her hjælpe i en test?
Jeg har lige brugt de samme betegnelser som før, så du må selv lige oversætte til hvad dine kolonner og tabel hedder :)

SELECT DISTINCT filename, account
FROM  Documents
WHERE  filename IN
(
  SELECT filename
  FROM  Documents
  GROUP BY filename
  HAVING((COUNT(filename) > 1) AND (COUNT (DISTINCT account) > 1))
)
Avatar billede thomaslp Nybegynder
13. december 2006 - 14:19 #8
Det virker perfekt. Tak for hjælpen. Jeg er en glad mand :)
smider du lige et svar
Avatar billede ramad Praktikant
13. december 2006 - 14:20 #9
Glad for at kunne hjælpe :)
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