Avatar billede jems Nybegynder
07. november 2003 - 12:15 Der er 11 kommentarer og
1 løsning

Fjern dubletter

Jeg genererer et PDF dokument ud fra følgende select:

SELECT DISTINCT Firma.FirmaID, Kontaktperson.FirmaID AS Expr1, Titel.Titel, Firma.Navn, Kontaktperson.Navn AS Navn2, Firma.Adresse,
                Firma.Adresse2, Firma.Postnr, Postnumre.ByNavn
FROM            Firma INNER JOIN
                Postnumre ON Firma.Postnr = Postnumre.PostNr LEFT OUTER JOIN
                Kontaktperson ON Firma.FirmaID = Kontaktperson.FirmaID LEFT OUTER JOIN
                Titel ON Firma.TitelID = Titel.TitelID
WHERE GruppeID = 20 OR GruppeID = 22

Problemet er at hvis et firma er med i to grupper kommer det med to gange på labels...
Hvordan kan jeg undgå dette??

På forhånd tak

/Jens
Avatar billede ldanielsen Nybegynder
07. november 2003 - 12:21 #1
Hvilken tabel er GruppeID i ?
Avatar billede jems Nybegynder
07. november 2003 - 12:26 #2
Sorry havde kopieret den forkerte sætning ind...

Her den rigtige:

SELECT DISTINCT Firma.FirmaID, Titel.Titel, Firma.Navn, Kontaktperson.Navn AS Navn2, Firma.Adresse, Firma.Adresse2, Firma.Postnr,
                Postnumre.ByNavn, FirmaGruppe.GruppeID
FROM            Firma INNER JOIN
                FirmaGruppe ON Firma.FirmaID = FirmaGruppe.FirmaID INNER JOIN
                Postnumre ON Firma.Postnr = Postnumre.PostNr LEFT OUTER JOIN
                Kontaktperson ON Firma.FirmaID = Kontaktperson.FirmaID LEFT OUTER JOIN
                  Titel ON Firma.TitelID = Titel.TitelID
WHERE GruppeID = 20 OR GruppeID = 22
Avatar billede snowball Novice
07. november 2003 - 12:30 #3
Har du prøvet med "SELECT DISTINCT TOP 1" eller at sætte en "GROUP BY Firma.FirmaID" ind ?

Snowall
Avatar billede jems Nybegynder
07. november 2003 - 12:37 #4
Hmm ja nu har jeg, men jeg synes ikke rigtig det hjælper noget...
Avatar billede snowball Novice
07. november 2003 - 12:53 #5
Hvis du bruger TOP 1 så skulle du da gerne kun få 1 post tilbage !?

Snowball
Avatar billede jems Nybegynder
07. november 2003 - 12:56 #6
hehe ja det er rigtigt, men jeg skal jo ikke kun bruge 1 ;-)
Avatar billede terry Ekspert
07. november 2003 - 18:09 #7
remove the fields which are giving duplicates! DISTINCT means that the records which are the same are only shown once, so if there are some fields which differ then it is obviose that they are NOT distinct!
Avatar billede jems Nybegynder
11. november 2003 - 13:15 #8
Kunne dette problem løses ved at lave en Stored Procedure som oprettede en temp tabel med records fra de forskellige grupper og så derefter lavede en Select Distinct?
Avatar billede terry Ekspert
11. november 2003 - 18:24 #9
jems take a look at the data in the result! Are you 100% sure that ALL FIELDS are the same for the records you say are DUPLICATE? If they are then SELECT DISTINCT should remove duplicate records. If they are NOT then you MUST remove the columns (fields) from the query which are NOT the same!

A stored procedure wouldnt help IF the records are NOT the same! Which record(s) would you want to remove?
Avatar billede jems Nybegynder
13. november 2003 - 16:25 #10
Jeg har prøvet at sætte GROUP BY ind på alle koloner og nu virker det, så snowball skal vel ha sine point ;-)
Avatar billede snowball Novice
13. november 2003 - 16:55 #11
Svar ;)

Snowball
Avatar billede jems Nybegynder
13. november 2003 - 17:22 #12
Tak for hjælpen :)
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