Avatar billede gimle Nybegynder
14. juni 2000 - 22:10 Der er 16 kommentarer og
1 løsning

Trække en tabel fra en anden

Tabel 1 indeholder felterne kundenummer, navn, postnummer og postdistrikt. Det gør Tabel 2 også. Der er overlap således at en del kunder findes i begge tabeller. Nu vil jeg gerne lave en forespørgsel, der viser de kunder, der KUN findes i tabel 1. Lyder simpelt, synes jeg, men jeg kan ikke hitte ud af det - hjælp!
Avatar billede lp Nybegynder
14. juni 2000 - 22:14 #1
en SQL forespørgsel?
Avatar billede phylox2 Nybegynder
14. juni 2000 - 22:16 #2
Du laver en forespørgsel i Access, der sorterer efter kundenummer i Tabel 1 --- og trækker oplysningerne med fra Tabel 2 ...

Hvis det er, så send mig databasen og en return mail adresse, så skal jeg lave det for dig!
Avatar billede mckelly Nybegynder
15. juni 2000 - 08:10 #3
Prøv denne query. Jeg antager at Kundenummer er nøglen:

SELECT Tabel1.Kundenummer, Tabel1.Navn, Tabel1.Postnr, Tabel1.Postdistrikt, Tabel2.Kundenummer
FROM Tabel1 LEFT JOIN Tabel2 ON Tabel1.Kundenummer = Tabel2.Kundenummer
WHERE (((Tabel2.Kundenummer) Is Null));
Avatar billede gimle Nybegynder
15. juni 2000 - 21:39 #4
Godt gået, mckelly - men
Avatar billede gimle Nybegynder
15. juni 2000 - 21:43 #5
meningen var, at kundenummer IKKE er nøglen - at det er nødvendigt at teste på alle de nævnte felter for at se om rækkerne er ens..
Avatar billede jgc Nybegynder
16. juni 2000 - 00:12 #6
OK - her er en query der tager alle felterne med:

SELECT kunde1.* FROM kunde1
LEFT JOIN kunde2 ON (kunde1.postdistrikt = kunde2.postdistrikt) AND
(kunde1.postnummer = kunde2.postnummer) AND
(kunde1.navn = kunde2.navn) AND
(kunde1.kundenummer = kunde2.kundenummer)
WHERE
(((kunde2.kundenummer) Is Null) AND
((kunde2.navn) Is Null) AND
((kunde2.postnummer) Is Null) AND
((kunde2.postdistrikt) Is Null));

Jeg har sat et par linjeskift ind for at lette læsbarheden.
kunde1 svarer til din tabel1, kunde2 = tabel2

/Jens

Avatar billede gimle Nybegynder
20. juni 2000 - 22:10 #7
Godt, Jens - men desværre får jeg jo ALLE i tabel1 på denne måde. Meningen var kun at få dem i tabel1, som ikke også findes i tabel2.
Avatar billede region Nybegynder
21. juni 2000 - 10:54 #8
Simpelt..!!!!

lav en UNION forespørgsel der er grupperet efter kundenummer....
Avatar billede region Nybegynder
21. juni 2000 - 11:03 #9
Lav en forespørgsel i designvisning. Undlad at tilføje nogle tabeller men højreklik i det felt tabellerne normalt er placeret ( den øverste halvdel af billedet ). Vælg herefter SQL og indsæt nedenstående script. :

(SELECT * FROM Tabel1)
UNION
(SELECT * FROM Tabel2);
GROUP BY Tabel1.kundenummer;
Avatar billede region Nybegynder
21. juni 2000 - 11:10 #10
ØHHHHH... glem denne del af SQL scriptet :

GROUP BY Tabel1.kundenummer;

Det gør den jo automatisk..!!!!!
Avatar billede region Nybegynder
21. juni 2000 - 11:22 #11
Jeg har misforstået spørgsmålet....glem mine svar...
( det må være varmen..!!!! )
Avatar billede gimle Nybegynder
21. juni 2000 - 17:20 #12
37 grader her - det er nok til 2..
Avatar billede runesoft Nybegynder
23. juni 2000 - 10:56 #13
Her er noget jeg tror vil virke

(SELECT * FROM tabel1)
EXCEPT CORRESPONDING BY kundenummer
(SELECT * FROM tabel2)
Avatar billede runesoft Nybegynder
23. juni 2000 - 11:03 #14
øhh...  nu ser jeg at det ikke er på kundenummeret du kigger, prøv:

(SELECT * FROM tabel1)
EXCEPT
(SELECT * FROM tabel2)
Avatar billede gimle Nybegynder
24. juni 2000 - 09:43 #15
Rigtig smart, men min Access 97 siger, at ordet EXCEPT er en syntaxfejl. Det er heller ikke nævnt i hjælpen - desværre, for det du skriver, er lige præcis, det jeg vil. Er det mon med i Access 2000?
Avatar billede runesoft Nybegynder
24. juni 2000 - 13:49 #16
Det måtte jeg jo lige slå op. Det viser sig at EXCEPT ikke er understøttet af alle databaser (åbentbart heller ikke access). Istedet må du lave en sql der ligner følgende:

SELECT * FROM Table1 T1
WHERE NOT EXISTS
(SELECT * FROM Table2 T2 WHERE T1.kundenummer=T2.kundenummer AND T1.navn=T2.navn AND T1.postnummer=T2.postnummer AND T1.postdistrikt=T2.postdistrikt)
Avatar billede gimle Nybegynder
24. juni 2000 - 19:47 #17
Bingo! En tungt kørende forespørgsel, men den virker!
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