Avatar billede puppetmaster Nybegynder
20. december 2004 - 15:59 Der er 9 kommentarer og
1 løsning

select distinct

Hvordan finder man unikke værdier i 2 (eller flere) tabeller?

I tabel1 har jeg f.eks. 100 ordrer, som er til 3 kunder

I tabel2 har jeg så 1000 ordrer, som er til ca. 30 kunder, 3 af dem er de samme som i tabel1.

Jeg vil gerne en forespørgsel så jeg får vist de 30 forskellige kundenavne der er (tilsammen) i de 2 tabeller, men hvordan?
Det er jo intet problem at få vist de 3 kunder fra tabel1, efterfulgt af de 30 kunder fra tabel2 i en forespørgsel, vha. SELECT DISTINCT, men hvordan skal det se ud når jeg nu vil "merge" de 2 tabellers resultat?
Avatar billede terry Ekspert
20. december 2004 - 18:46 #1
If you make a query with an INNER join on Kunder then you will see that which exist in BOTH tables

If you use a UNION JOIN you can see ALL Kunde in both tables.

SELECT DISTINCT Kunde From Table1
UNION ALL
SELECT DISTINCT Kunde From Table1
Avatar billede puppetmaster Nybegynder
21. december 2004 - 10:02 #2
SELECT DISTINCT Kundenavn FROM [Table1] WHERE Kundenavn IS NOT NULL UNION ALL SELECT DISTINCT Kundenavn FROM [Table2] WHERE Kundenavn IS NOT NULL

I have tried with this and it returns all the Kundenavn from BOTH tables!
Table1
Kundenavn
*********
Lars Larsen
Hans Nielsen
Lene Hansen
Jesper Petersen
Katrine Ellekilde

Tabel2
Kundenavn
*********
Lene Hansen
Hans Nielsen
Lars Larsen
Kirsten Degn
Lisbeth Kjær
Niels Nielsen

The resultset that I need is this:
Lars Larsen
Hans Nielsen
Lene Hansen
Jesper Petersen
Katrine Ellekilde
Kirsten Degn
Lisbeth Kjær
Niels Nielsen


But what I get with SELECT DISTINCT . . . UNION ALL, is this:
Lars Larsen
Hans Nielsen
Lene Hansen
Jesper Petersen
Katrine Ellekilde
Lene Hansen
Hans Nielsen
Lars Larsen
Kirsten Degn
Lisbeth Kjær
Niels Nielsen

The Kundenavn which is the same in both tables are "returned" twice!
And I have 8 tables that I SELECT Kundenavn from!
And I use the field Kundenavn as the name of my spreadsheets, but I don't want to (read: can't!) have spreadsheets that have the same name in a workbook.
Avatar billede terry Ekspert
21. december 2004 - 10:05 #3
Drop the ALL in UNION ALL
Avatar billede terry Ekspert
21. december 2004 - 10:06 #4
I though you wanted to see them ALL :o)
Avatar billede puppetmaster Nybegynder
21. december 2004 - 10:33 #5
Ahhh...I have to drop the ALL clause, better test it before awarding you with the points! ;)
Avatar billede Jørgen Kirkegaard Professor
27. december 2004 - 14:23 #6
Terry: Du får da stadig samme kunder med fra begge tabeller! Det rigtige må være:
SELECT DISTINCT
SELECT Kunde From Table1
  UNION
SELECT Kunde From Table2
Atlså at du samler alle kunder i én klamamse og efterfølgende "kører" DISTINCT.
Avatar billede terry Ekspert
27. december 2004 - 14:39 #7
Hi staticdata
A UNION select without the ALL should if I'm not mistaken, should automatically give a DISTINCT. Using ALL should show ALL records.
Avatar billede Jørgen Kirkegaard Professor
27. december 2004 - 17:06 #8
Well, du har nok ret, men det er da hurtigt testet - så det gør puppetmaster nok.
Avatar billede puppetmaster Nybegynder
04. januar 2005 - 08:58 #9
Well, terry havde ret (og det tog ikke lang tid at test......kun laaaang tid at tildele point!)
Avatar billede terry Ekspert
04. januar 2005 - 12:46 #10
thanks, and a happy new year to you both
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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