Avatar billede mal Nybegynder
09. august 2006 - 07:53 Der er 13 kommentarer og
1 løsning

Find dublanter

Jeg har 2 databaser i MS Access... lad os for nemhedens skyld kalde dem A1 og B1, de indeholder alle sammen 3 tekstfelter a b og c (det er adresser), men indholdet i de 2 databaser er forskellig ... jeg vil gerne have dem sorteret således at jeg kan sortere dem fra i A som er i B

Altså jeg vil gerne have en liste over dublanterne ... altså A1.b = B1.b og A1.c = B1.c og en liste over dem som ikke er dublanter  ... er der en som gider skrive de 2 x 5 linjers programmering som ligger i det ... for, for at sige det som det er, så har jeg ikke skrevet en linje SQL de sidste 8-10 år.

På forhånd tak
Avatar billede nielle Nybegynder
09. august 2006 - 08:06 #1
SELECT A1.* FROM A1, B2 WHERE A1.b=B1.b AND A1.c=B1.c
Avatar billede mal Nybegynder
09. august 2006 - 09:35 #2
Jeg har desværre først dataen i morgen ... men det ser rigtig ud ... hvordan får jeg så en liste over dem som ikke er dublanter ?
Avatar billede nielle Nybegynder
09. august 2006 - 09:55 #3
Vist nok sådan her:

SELECT A1.* FROM A1 LEFT JOIN B2 ON A1.b = B1.b AND A1.c = B1.c WHERE B1.b IS NULL
Avatar billede mal Nybegynder
09. august 2006 - 10:03 #4
Jeg kikker lige på det
Avatar billede mal Nybegynder
09. august 2006 - 10:46 #5
De virker begge perfekt, men hvis jeg ligger de 2 tal sammen giver det
571 + 2339 = 2910 - men A1 indeholder kun 2846, hvad kan give et overlap ?
Avatar billede mal Nybegynder
09. august 2006 - 13:11 #6
Jeg kan godt se at min kommentar kl. 9:35 ikke passer overens med den 10:03 ... men det skyldes at jeg har en del af den data jeg skal bruge - og ud fra det synes jeg at det var værd at prøve om det virkede!
Avatar billede nielle Nybegynder
09. august 2006 - 14:21 #7
Spørgsmål 1: Har dubletter i dine data?

2: Er der data i B1-tabellen hvor at der står NULL i b-feltet?

3: Giver:

SELECT A1.* FROM A1 LEFT JOIN B2 ON A1.b = B1.b AND A1.c = B1.c WHERE B1.c IS NULL

- det samme antal rækker som 09/08-2006 09:55:41.

4: Og hvordan med:

SELECT A1.* FROM A1 LEFT JOIN B2 ON A1.b = B1.b AND A1.c = B1.c WHERE B1.b IS NULL AND WHERE B1.b IS NULL

?
Avatar billede nielle Nybegynder
09. august 2006 - 15:21 #8
Den sidste skal være:

SELECT A1.* FROM A1 LEFT JOIN B2 ON A1.b = B1.b AND A1.c = B1.c WHERE B1.b IS NULL AND B1.b IS NULL
Avatar billede mal Nybegynder
09. august 2006 - 16:53 #9
Spørgsmål 1:

Det er dubletter i dataen i både A1 og i B2 ...

Jeg kikker lige på den imorgen ... der har jeg også det rigtige data ... mener du ikke:

WHERE B1.b IS NULL AND B1.c IS NULL
Avatar billede nielle Nybegynder
09. august 2006 - 18:28 #10
Ja, nemlig :^)
Avatar billede nielle Nybegynder
09. august 2006 - 18:29 #11
Spørgsmål 1: er der dubletter i A1 hvis du sammenligner med andre rækker i A1? Og er der ligeledes dubletter i tabel B1?
Avatar billede mal Nybegynder
10. august 2006 - 08:58 #12
Jeg kan se på de lister at jeg trækker ud at der kan stå det samme adrese 2 gange i træk, hvilket skyldes at der er 2 poster i B1 som har den pågældende adresse ... så det svarer ligesom på mit egen spørgsmål på det område ... jeg siger endnu engang mange tak for hjælpen.
Avatar billede mal Nybegynder
10. august 2006 - 09:02 #13
Ups glemte at sige ... kan jeg overtale dig til at lave et svar ?
Avatar billede nielle Nybegynder
10. august 2006 - 10:49 #14
Hvis du er interesseret i au dungå dubletterne, kan det gøre ved DISTINCT eller DISTINCTROW:

SELECT DISTINCT A1.* FROM A1 LEFT JOIN B2 ON A1.b = B1.b AND A1.c = B1.c WHERE B1.b IS NULL AND B1.c IS NULL

... og et svar :^)
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