Avatar billede andersasp Nybegynder
23. oktober 2007 - 07:59 Der er 15 kommentarer og
1 løsning

Fjern dubliketter

Hejsa eksperter,

Jeg har en SQL sætning hvor jeg skal have fjernet nogle data som gentager sig.. jeg er dog ikke helt sikker på hvordan jeg gør det???

Jeg har prøvet med decient men så kan jeg kun udtrække 1 datafelt fra tabellen..

Det felt som forekommer flere gang er:

bookletvariants.Vmodelnr
-----------------------------------------

Sql = "SELECT bookletmodels.Mcollectionname, bookletmodels.Mmodelnr, bookletmodels.Mimage, bookletmodels.Mbarcode, " & _
"bookletvariants.Vvariantnr, bookletvariants.Vbarcode, bookletvariants.Vcolor, bookletvariants.Vsize " & _
"FROM bookletmodels " & _
"INNER JOIN bookletvariants ON bookletmodels.Mmodelnr = bookletvariants.Vmodelnr " & _
"WHERE Mmodelnr IN (" & MmodelnrList & ") " & _
"ORDER BY " & _
"bookletmodels.Mmodelnr, bookletvariants.Vmodelnr"
Avatar billede andersasp Nybegynder
23. oktober 2007 - 08:00 #1
Flot stavet:) dubliketter -> dubletter
Avatar billede nielle Nybegynder
23. oktober 2007 - 08:07 #2
Prøv med SELECT DISTINCT ...
Avatar billede andersasp Nybegynder
23. oktober 2007 - 08:35 #3
Ok super,

Hvis det skulle være feltet bookletvariants.Vvariantnr, hvordan skal det så indsættes i ovenstående SQL sætning??
Avatar billede softspot Forsker
23. oktober 2007 - 08:49 #4
Med DISTINCT er det hele rækken der er "distinct", hvilket betyder at når du vælger flere kolonner, kan du sagtens risikere at der kommer flere rækker med samme værdi i en enkelt kolonne.

Jeg kan ikke lige gennemskue hvordan du skal gøre for med den viden jeg har om din datastruktur, men enten er det noget med en gruppering i samspil med en aggregat funktion eller en subquery der leverer et datasæt som er entydigt, hvorpå du så kan forespørge (f.eks. en liste af id'er som du kan lave en "...x IN y..." filtrering på).
Avatar billede fennec Nybegynder
23. oktober 2007 - 08:57 #5
Har jeg forstået det rigtig??

Lad os sige du har dette resultat:

Vvariantnr, Mcollectionname, Mmodelnr
3, 'navn 1', 'Model 1'
3, 'navn 2', 'Model 2'
4, 'navn 1', 'Model 1'
5, 'navn 3', 'Model 3'

Du vil så kun have EN række hvor Vvariantnr er 3?? Hvilke data havde ud så tænkt dig skulle være i Mcollectionname, Mmodelnr?? Der er jo to rækker som passer på de data...
Avatar billede andersasp Nybegynder
23. oktober 2007 - 09:06 #6
Det kan jeg da godt se, det skal så være

bookletvariants.Vmodelnr samt bookletvariants.Vvariantnr

Er det muligt? dette burde løse det..
Avatar billede fennec Nybegynder
23. oktober 2007 - 09:18 #7
Tror vi bliver nød til at se eks på data inden vi kan udtale os om noget som helst. Vi ved jo ikke hvad der står i de enkelte felter og deres sammenhæng, så de evt kan gøres distinct ved at undlade et par kolonner.
Avatar billede andersasp Nybegynder
23. oktober 2007 - 09:26 #8
Her kommer lige et eksempel, håber det giver mening:

Jeg er nu ret sikker på at bookletvariants.Vmodelnr samt bookletvariants.Vvariantnr vil løse det, da varianter kan forekomme på flere modelnumre..

VID    Vvariantnr    Vmodelnumber    Vbarcode    Vcolor    Vsize
7641    93065031    9306    93065031    XXXXXX    4916
7631    93046521    9304    93046521    XXXXXX    5219
7632    93043031    9304    93043031    XXXXXX    5219
7633    93045031    9304    93045031    XXXXXX    5219
7634    93052021    9305    93052021    XXXXXX    5219
7635    93054021    9305    93054021    XXXXXX    5219
7636    93056031    9305    93056031    XXXXXX    5219
7637    93056521    9305    93056521    XXXXXX    5219
7638    93053031    9305    93053031    XXXXXX    5219
7630    93046031    9304    93046031    XXXXXX    5219
7640    93063031    9306    93063031    XXXXXX    4916
7669    93012021    9301    93012021    XXXXXX    5118
Avatar billede fennec Nybegynder
23. oktober 2007 - 09:43 #9
Det eks du har vist, hvad skulle det blive til?? Jeg kan kun se dupletter på Vmodelnumber og ikke Vvariantnr.
Avatar billede andersasp Nybegynder
23. oktober 2007 - 10:57 #10
UPS sorry, dårligt eksempel.. Men det er bookletvariants.Vvariantnr hvor der skal fjernes dubletter..

Dvs. find alt data som passer til det forespurgte bookletvariants.Vmodelnr, og derefter fjerne dubletter på bookletvariants.Vvariantnr..

Er dette muligt?

På forhånd tak
Avatar billede fennec Nybegynder
23. oktober 2007 - 11:07 #11
Prøv lige at lave et eksempel..
Et med rækker med dupletter og hvad du kunne ønske dig resultatet skulle blive.
Avatar billede andersasp Nybegynder
23. oktober 2007 - 12:25 #12
dette skulle passe på dette problem :)

Vvariantnr    Vmodelnumber    Vbarcode    Vcolor    Vsize
86026632    4108    86026632    461C23    615   
860226632    4108    86026632    272B2E    615   
860216632    4109    86026632    262A2D    615   
860226532    4109    86026532    E3E2DE    615
Avatar billede andersasp Nybegynder
21. januar 2008 - 11:49 #13
Hejsa, i må lige smide nogle svar hvis i vil have nogle point.. jeg tror jeg har forstået DISTINCT nu :)
Avatar billede nielle Nybegynder
21. januar 2008 - 19:52 #14
Der er vist andre som har bidraget mere end mig :^)
Avatar billede softspot Forsker
22. januar 2008 - 00:29 #15
ja, fennec, det er der vist ;-)
Avatar billede fennec Nybegynder
28. januar 2008 - 08:32 #16
Jeg er lige kommet hjem fra skiferie, hvorfor det tog lidt tid at svare
.o) <-- One Eyed Jack
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
Kurser inden for grundlæggende programmering

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